直接插入排序
基本操作:将一个记录插入到已排好序的有序表中,从而得到一个新的记录数+1的有序表思路演示原始数据 5 4 1 2 3第一次 4 5 1 2 3第二次 1 4 5 2 3第三次 1 2 4 5 3第四次 1 2 3 4 5
# include <stdio.h> //此次排序为升序 void InsertSort(int *a, int n){ //对数组进行直接插入排序 排序后的结果由小到大 int i, j = 1, t, temp; for(i = 1; i < n; i++){//从第二个记录开始 //将 a[i]插入到有序表a[0~i-1]中 temp = a[i];//将a[i]保存在temp中 t = i;//获得有序表a[0~i-1]的长度 while(a[t-1]>temp && t>0){//有序表由后向前,如果a[i]小于记录 a[t] = a[t-1];//记录向后移动一个位置 t--; } a[t] = temp;//a[i]插入到正确的位置 printf("第%d次:", i); for(t = 0; t < n; t++){ printf("%d ", a[t]); } printf("\n"); } return ; } int main(void){ //数组a是从下标0开始存储数据 int a[]= {5, 4, 1, 2, 3}; int i ,n = 5; InsertSort(a, n); return 0; }