二分法插入排序:
算法思想简单描述:
在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们
中间的那个元素比,如果小,则对前半再进行折半,否则对后半
进行折半,直到left>right,然后再把第i个元素前与目标位置之间
的所有元素后移,再把第i个元素放在目标位置上。
二分插入排序是稳定的,平均时间O(n2)
代码如下:
void binary_sort(int *x, int n)
...{
int t,left,right;
for(int i=1;i<n;++i)
...{
t = *(x+i);
left = 0;
right = i-1;
while(left<=right)
...{
int m = (left+right)/2;
if( t < *(x+m))
right = m - 1;
else left = m + 1;
}
for(int j=i-1;j>=left;--j)
...{
*(x+j+1) = *(x+j);
}
*(x+left) = t;
}
}
本文介绍了一种改进的插入排序算法——二分法插入排序。该算法通过使用二分查找来减少比较次数,提高排序效率。文章详细展示了二分法插入排序的具体实现过程,并指出其时间复杂度为O(n²),但实际操作中通常比标准插入排序更快。
1133





