/*折半插入排序
折半插入排序,只是减少了查找关键词的位置的查找过程减少了比较次数,但后移这一部分没有改变
和直接插入排序一样
*/
void BInsertSort(SqList &L)
{
for(int i = 2 ; i<=L.lenght ; i ++)
{
L.r[0] = L.r[i] ;
int low , high ;
low = 1 ; high = i-1 ;
while(low<=high)//二分查找需要插入的位置
{
int mid = (low +high) / 2 ;
if(L.r[0]<L.r[mid])
high = mid - 1 ;
else
low = mid + 1 ;
}
for(int j = i-1;j<=high + 1 ; j--) //将记录后移
L.r[j+1] = L.r[j] ;
L.r[high+1] = L.r[0] ;
}
}
折半插入排序
最新推荐文章于 2023-07-03 22:18:52 发布