◆ 微信扫描二维码分享
◆ 手机QQ扫描二维码,点击右上角···分享到QQ好友或QQ空间
请拨打电话:4008017500
返回

方法技巧

更多 关闭

二分法排序

赌神传说 3198 2022-12-04 14:36

二分法排序其实是一种改进的插入排序,也是通过查找待插入位置来实现排序,这和插入排序是类似的。



    算法思想,在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半部分再进行折半,否则对后半进行折半,



直到left<right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。



    二分法实际上没有进行排序,只进行了有查找。所以当找到要插入的位置时,必须从移动最后一个记录开始,向后移动一位,再移动倒数第2位,直到要插入的位置的记录移后一位。



    下面的图展示了二分法排序的工作原理,看图



附件: 2395326



下面通过代码来实现二分法排序,上代码

#include<iostream>

using namespace std;



void dichotomizingsort(int a[],int n)  //升序排列

{

   int i,j,mid=0,left,right,tem=0;

   for(i=1;i<n;i++)

   {

       tem=a;

       left=0;  //指向有序表的低位

       right=i-1;   //指向有序表的高位

       while(left<=right)  //当left和right向中间靠拢的时候发生碰撞就结束排序

       {

          mid=(left+right)/2;  //取有序表中间的那一个元素

          if(a[mid]>tem)

                    right=mid-1; //待插入元素比大中间元素小,就对前半部分再折半

          else

                    left=mid+1;  //待插入元素不小于中间元素,就对后半部分再折半

        }

       for(j=i-1;j>=left;j--)  //left就是在有序表中待插入的位置,但要先把left之后的所有元素向后移动一位

       {

            a[j+1]=a[j];

       }

       a[left]=tem;  //移动后就可以插入了

       cout<<"第"<<i<<"次待插入的数据是:"<<tem<<endl;

       cout<<"此时有序表中的数据位:";

       for(j=0;j<=i;j++)

           cout<<a[j]<<" ";

       cout<<endl;

   }

}

int main()

{

    int a[10]={34,4,78,35,3,64,45,18,26,35};

    dichotomizingsort(a,10);

    cout<<"执行插入排序后数组为:";

    for(int i=0;i<10;i++)

        cout<<a<<" ";

    return 0;

}



测试结果如下:

附件: 2395328



最后来说一下复杂度



空间复杂度:和插入排序一样,只用到了一个辅助空间,为O(1)。



时间复杂度:二分法排序是一种稳定的排序算法,与二分排序的复杂度相同;最好的情况是当插入的位置刚好是二分位置 所用时间为O(log2n);最坏的情况是当插入的位置不在

二分位置, 所需比较次数为O(n),无限逼近线性查找的复杂度;而平均时间复杂度为O(n^2)。

【ailijing】重号-引申等间隔期数观察 【lcgsky520】大家一起推红球~~~~~~~
方法技巧推荐 更多
双色球选号技巧之三种投蓝小方法

双色球选号技巧之三种投蓝小方法

蓝瘦香菇

472025-07-25 08:00

双色球技巧-双色球最精准的算式法

双色球技巧-双色球最精准的算式法

极度震撼

2732025-07-24 15:43

双色球技巧-福利彩票双色球蓝号规律总结

双色球技巧-福利彩票双色球蓝号规律总结

极度震撼

1442025-07-24 14:06

双色球技巧-买双色球最科学的方法

双色球技巧-买双色球最科学的方法

极度震撼

1782025-07-24 10:32

双色球技巧-双色球蓝球选号法:根据间距规律

双色球技巧-双色球蓝球选号法:根据间距规律

极度震撼

2572025-07-23 13:47

福彩双色球蓝球高手技巧

福彩双色球蓝球高手技巧

极度震撼

2782025-07-23 12:21

双色球杀蓝方法 实用4招制胜技巧

双色球杀蓝方法 实用4招制胜技巧

极度震撼

2992025-07-23 10:44

双色球选号技巧之固定距离排红法

双色球选号技巧之固定距离排红法

蓝瘦香菇

2452025-07-23 08:05

双色球选号技巧之隔期定位选红码

双色球选号技巧之隔期定位选红码

蓝瘦香菇

8022025-07-19 08:10

双色球选号技巧之隔期选号定位法

双色球选号技巧之隔期选号定位法

蓝瘦香菇

8182025-07-17 07:52

征文《双色球旋转矩阵,省钱中奖新可能》

征文《双色球旋转矩阵,省钱中奖新可能》

随机五百注

6812025-07-16 16:19

双色球选号技巧之必选号码分析

双色球选号技巧之必选号码分析

蓝瘦香菇

10902025-07-15 08:09

征文 双色球杀蓝技巧

征文 双色球杀蓝技巧

大道三千无上至尊

12612025-07-13 19:37

双色球选号技巧之分散投彩的技巧

双色球选号技巧之分散投彩的技巧

蓝瘦香菇

5652025-07-13 07:59

时光倒流法下载开奖数据VBA代码

时光倒流法下载开奖数据VBA代码

都市知心

22292025-07-12 10:30

双色球选号技巧之单注选号"拣号法"

双色球选号技巧之单注选号"拣号法"

蓝瘦香菇

9612025-07-11 08:03

双色球选号秘籍——为蓝球量身定制“投资计划”

双色球选号秘籍——为蓝球量身定制“投资计划”

乐彩牛百岁

9352025-07-10 20:59

双色球选号技巧之断档选号

双色球选号技巧之断档选号

蓝瘦香菇

6692025-07-09 08:03

征文《大揭秘,双色球达芬奇密码数字背后的玄机》

征文《大揭秘,双色球达芬奇密码数字背后的玄机》

宣传员

22032025-07-08 10:21

征文《八卦罗盘定红球,双色球选号的八卦走势三绝招!》

征文《八卦罗盘定红球,双色球选号的八卦走势三绝招!》

宣传员

10192025-07-08 09:59