折半插入排序

来源:互联网 发布:赵云 知乎 编辑:程序博客网 时间:2024/06/14 00:09

折半插入排序

基本思路:由于插入排序的基本操作是在一个有序表中进行查找与插入,其中的查找操作可以利用折半查找来实现
# include <stdio.h>//此次排序为升序//折半查找 返回目标数据要插入的下标 int HalfSear(int *a, int n, int num){int frist = 0;int final = n-1;int mid;while(frist <= final){mid = (frist+final)/2;if(a[mid]<num)frist = mid+1;else final = mid-1; }return frist;}void HalfInsertSort(int *a, int n){int i, j;int t, temp;for(i = 1; i < n; i++)temp = a[i];t = HalfSear(a, i, a[i]);//找到a[i]要插入的位置 for(j = i; j>t; j--) a[j] = a[j-1];a[t] = temp;//将a[i]插入正确位置 printf("第%d次排序:", i); for(t = 0; t < n; t++){printf("%d ", a[t]);} printf("\n");}} int main(void){int a[] = {5,4,1,2, 3};int n = 5;HalfInsertSort(a, n);return 0;} 

0 0
原创粉丝点击