#include <stdio.h>
void InsertSort(int A[],int n)
{
int low ,high,mid;
for(int i = 2;i<=n;i++)//依次将A[2]到A[n]插入前面的已排序序列
{
A[0] = A[i];//哨兵
low = 1;
high = i-1;//设置折半查找的范围
while(low<=high)//折半查找
{
mid = (low + high)/2;
if(A[mid]>A[0])
high = mid-1;//查找左半子表
else
low = mid+1;//查找右半子表
}
for(int j = i-1;j>=high+1;--j)
A[j+1] = A[j];//统一后移元素,空出插入位置
A[high+1] = A[0];//插入操作
}
}
折半插入排序
最新推荐文章于 2024-07-24 19:35:30 发布