#include<stdio.h>
void binaryInsertion(int *a,int n)
{
int top,bottom,mid;
int i,j;
for(i=2;i<=n;i++)/*从第二个元素开始排序*/
{
top=1;
bottom=i-1;
a[0]=a[i];
while(top<=bottom)
{
mid=(top+bottom)/2;
if(a[0]<a[mid])
bottom=mid-1;
else
top=mid+1;
}
for(j=i-1;j>bottom;j--)/*从bottom指针后面的元素依次后移一位*/
a[j+1]=a[j];
a[top]=a[0];/*最后的插入位置在top指针处,即bottom指针后面*/
}
}
int main()
{
int arr[11];
int i;
for(i=1;i<=10;i++)
scanf("%d",arr+i);
binaryInsertion(arr,10);
for(i=1;i<=10;i++)
printf("%d ",arr[i]);
return 0;
}
折半插入排序
最新推荐文章于 2023-01-29 16:56:25 发布