#include<stdio.h>
#define N 1000
void insert(int *a,int n);
main()
{
int a[N];
int n;
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",a+i);
insert(a,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
void insert( int *a, int n)
{
int key,
i, j,
low, high, mid;
for( i=1; i<n; i++ )
{
if(*(a+i) < *(a+i-1) )
{
low = 0;
high = i-1;
key = *(a+i);
while( low <= high )
{
mid = (low+high)/2;
if( key < *(a+mid))
high = mid - 1;
else
low = mid + 1;
}
for( j=i; j>high+1; j-- )
*(a+j) = *(a+j-1);
*(a+high+1) = key;
}
}
}
折半插入排序
最新推荐文章于 2020-06-27 21:16:16 发布