/*折半排序*/
void BinaryInsertSort(int R[], int n)
{
int i, j, low, mid, high, temp;
for (i = 1; i < n; i++)
{
low = 0;
high = i - 1;
temp = R[i];
while (low <= high) //找到合适的插入位置high+1
{
mid = (low + high) / 2;
if (temp < R[mid])
{
high = mid - 1; //左半区
}
else
{
low = mid + 1; //右半区
}
}
for (j = i - 1; j >= high + 1; j--) //high+1后的元素后移
{
R[j + 1] = R[j];
}
R[j + 1] = temp; //将元素插入到指定位置
}
}
折半排序
最新推荐文章于 2021-08-09 16:50:05 发布