#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; }
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。