编写一个程序,实现折半插入排序算法并用相关数据进行测试
废话不多说直接上代码:
#include<stdio.h>
const int maxn=10000;
int a[maxn];
void erfencharu(int a[],int n)
{
int temp,low,high,mid;
for(int i=1;i<n;i++)
{
temp=a[i];
low=0;high=i-1;
while(low<=high)
{
mid=(low+high)/2;
if(temp<a[mid])
high=mid-1;
else low=mid+1;
}
for(int j=i-1;j>=high+1;j--)
{
a[j+1]=a[j];
}
a[high+1]=temp;
}
printf("排序后的序列为:");
for(int i=0;i<n;i++)
{
printf("%d ",a[i]);
}
}
int main()
{
int n;
printf("输入待排序序列元素的个数:");
scanf("%d",&n);
printf("输入待排序序列:");
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
erfencharu(a,n);
return 0;
}