编辑代码

#include <stdio.h>
#include <stdlib.h>
int main() {
    int a[]= {12,4,132,55,46,232,789,1,0,98,523,666};//随机数组
    int n = sizeof(a)/sizeof(a[0]);//获取数组大小
    int i,j,k,low,high,mid;
 //在要排序的一组数中,假定前n-1个数已经排好序,现将第n个数插到前面的有序数列中,
 //使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
for(int i=0;i<n;i++){
    a[0]=a[i];
    low=i;high=i-1;
    while(low<=high){
        mid=(low+high)/2;
        if(a[mid]>a[0]) 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];
    
}
for(i = 0; i < n; i ++)//输出排序后的结果
        printf("%d ",a[i]);
    return 0;
}
//运行结果如下:
//0 1 4 12 46 55 98 132 232 523 666 789