參照 實驗樓 插入排序代碼
spa
它的作法是:每次從無序表中取出第一個元素,把它插入到有序表的合適位置,使有序表仍然有序。第一趟比較前兩個數,而後把第二個數按大小插入到有序表中; 第二趟把第三個數據與前兩個數從前向後掃描,把第三個數按大小插入到有序表中;依次進行下去,進行了(n-1)趟掃描之後就完成了整個排序過程,以下圖所 示。code
下附實驗代碼排序
#include <stdio.h> #include <stdlib.h> int n; /* * 直接插入排序(頭幾遍可能會暈 拿張紙畫畫就懂了 回頭再看幾遍確保理解透徹) */ void InsertSort(int *array) { int i, j; for (i = 2; i <= n; i++) { if (array[i] < array[i - 1]) { array[0] = array[i]; array[i] = array[i - 1]; for (j = i - 2; array[0] < array[j]; j--) { array[j + 1] = array[j]; } array[j + 1] = array[0]; } } } int main() { int i; int *array; printf("Please enter the length of arr:\n"); scanf("%d", &n); array = (int*) malloc(sizeof(int) * (n + 1)); printf("Please enter each element(seperate by space):"); for (i = 1; i <= n; i++) { scanf("%d", &array[i]); } InsertSort(array); printf("sorted array:"); for (i = 1; i <= n; i++) { printf("%d ", array[i]); } printf("\n"); }