折半插入排序,折半插入排序是在直接插入的改进,通过折半查找得到插入位置,减少比较次数。
折半插入排序的基本思想是:设在数据表中有一个元素序列a[0],a[1],……,a[n-1]。其中,a[0],a[1],……,a[i-1]已经排好序。在插入a[1]时,利用折半查找法寻找a[i]的插入位置。
int BinaryInsertSort()
{
int i, j, low, high, mid,temp;
for (i = 2; i < iCount; i++)
{
Arr[0] = Arr[i];
low = 1;
high = i - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (Arr[0] >Arr[mid])
low = mid + 1;
else
high = mid - 1;
}
for (j = i - 1; j >= low ; j--)
{
Arr[j + 1] = Arr[j];
}
Arr[low] = Arr[0];
}
for (int k = 1; k < iCount; k++)
{
cout << Arr[k] << " ";
}
cout << endl;
return 0;
}
本文详细介绍了折半插入排序算法,这是一种改进版的插入排序,通过使用折半查找来确定待插入元素的位置,从而减少了不必要的比较次数。文章提供了具体的实现代码示例。
1万+

被折叠的 条评论
为什么被折叠?



