• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C语言实现折半插入算法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 #include <stdio.h>
 2 int BInsertSort(int array[],int left,int right){  //接收主函数调用语句中的实参传到这里的形参里
 3     int low,high,mid;
 4     int temp;
 5     for(int i=left+1;i<=right;++i){
 6         temp=array[i];  //把第2个数(也就是下标1位置的数)存到temp临时变量里,即从第2个数开始往后的序列依次按照折半插入插入到第一个数的数列里(默认第一个数作为一个有序序列)
 7         low=left;  //将待插入的关键字要想插入到已经有序的序列中,需要找到插入位置,从此句往下为在有序序列中查找插入位置
 8         high=i-1;    //在有序序列中设置左右下标变量low和high
 9         while(low<=high){     //当low和high交换位置时结束查找
10             mid=(low+high)/2;
11             if(array[i]<array[mid])    /*此while循环为折半查找算法*/
12                 high=mid-1;
13             else        //如果待插入关键字大于或等于下标为mid处的关键字,都是在mid处后面进行插入
14                 low=mid+1;
15         }
16         for(int j=i-1;j>=low;--j)    //把从low号位置及其后的关键字全部后移一个位置,把待插入的关键字放在low号位置
17             array[j+1]=array[j];
18         array[low]=temp;
19     }
20     return 0;
21 }
22 int main(){
23     int a[6]={10,9,3,5,4,2};
24     printf("排序前序列:");
25     for(int i=0;i<6;++i)
26         printf("%d\t",a[i]);
27     printf("\n");
28     BInsertSort(a,0,5);   //调用BInsertSort函数,把待排序数组a,左下标0,右下标5传到形参
29     printf("排序后序列:");
30     for(int j=0;j<6;++j)
31         printf("%d\t",a[j]);
32     printf("\n");
33     return 0;
34 }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#的keyValue发布时间:2022-07-13
下一篇:
C#递归发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap