/*二分插入排序算法的时间复杂度为O(n^2)
它为稳定的排序算法*/
#include <stdio.h>
int sum[1010];
int main()
{
int n,i,j,left,right,mid,temp;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&sum[i]);
for(i=2;i<=n;i++)
{
left=1;
right=i-1;
temp=sum[i];
while(left<=right)
{
mid=(left+right)/2;
if(sum[mid]>temp) //小于取左边
{
right=mid-1;
}
else //大于取右边
{
left=mid+1;
}
}
for(j=i-1;j>=left;j--)
{
sum[j+1]=sum[j];
}
sum[left]=temp;
}
for(i=1;i<=n;i++)
printf("%d ",sum[i]);
printf("\n");
return 0;
}
二分法插入排序
最新推荐文章于 2023-03-06 15:54:28 发布