a[0,j-1]已经完成排序,a[j]插入有序的a[0,j-1]中,a[j]与a[0,j-1]从后往前比较大小,如果a[j]小于a[j-1],则a[j-1]后移,依次类推,直到找到a[j]大于a[0,j-1]其中一个数,插到这个数后面。
#include <stdio.h>
#include <stdlib.h>
int n;
void insert_sort(int a[],int n){
for(int j=1;j<n;j++){
int temp=a[j];
int i=j-1;
while(i>=0&&temp<a[i]){
a[i+1]=a[i];
i=i-1;
}
a[i+1]=temp;
}
for(int i=0;i<n;i++){
printf("%d ",a[i]);
}
}
int main(int argc, char *argv[])
{
// 请在此输入您的代码
scanf("%d",&n);
int a[n];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
insert_sort(a,n);
return 0;
}