1、折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。
2、折半查找:要求线性表是有序的,确定查找区间,找到该区间的中间位置mid,将mid的值与待查找的值比较,若大于mid值,则在右区间,若等于,等查找结束,否则在左区间,以此类推上述的操作
3、代码
void BinaryInsertSort(int a[],int size){
int i,j,mid,low=0,high=0;
int temp=0;
for(i=1;i<size;i++){
low=0;
high=i-1;
temp=a[i];
while(low<high){
mid=(low+high)/2;
if(arr[mid]>temp)
high=mid-1;
else
low=mid+1;
}
for(j=i;j>low;j--){
a[j]=a[j-1];
}
a[low]=temp;
}
}