直接插入排序
#include<stdio.h>
#define MAXSIZE 20
typedef int ElemType;
void InsertSort(ElemType A[],int n){
int i,j;
for(i=2;i<=n;i++){ // 依次将A[2]~A[n]插入前面已排序序列
if(A[i]<A[i-1]){ // 若A[i]关键码小于其前驱,将A[i]插入有序表
A[0]=A[i]; // 复制为哨兵,A[0]不存放元素
for(j=i-1;A[0]<A[j];--j){ // 从后往前查找待插入位置
A[j+1]=A[j]; // 向后挪位
}
A[j+1]=A[0]; //复制到插入位置
for(int j=0;j<=n;j++){
printf("%d ",A[j]);
}
printf("\n");
}
}
}
int main(){
int A[MAXSIZE];
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&A[i]);
}
InsertSort(A,n);
for(int i=1;i<=n;i++){
printf("%d ",A[i]);
}
return 0;
}