代码实现
#include<stdio.h>
#define N 5
void BinsertSort(int a[]){
int i,j;
int low,high,mid;
for(i=2;i<=N;++i){
a[0]=a[i];//设置哨兵
low=1;high=i-1;
while(low<=high){
mid=(low+high)/2;
if(a[0]<a[mid]) high=mid-1;
else low=mid+1;
}
for(j=i-1;j>=high+1;--j) a[j+1]=a[j];
a[high+1]=a[0];
}
}
int main(){
int a[N];
int i;
printf("输入%d个数:",N);
for(i=1;i<=N;i++){
scanf("%d",&a[i]);
}
BinsertSort(a);
for(i=1;i<=N;i++){
printf("%d\t",a[i]);
}
}