1 //插入排序 2 #include <stdio.h> 3 //先前自己写的 4 void insertionSort01(int *array, int length) 5 { 6 int i = 0, j = 1, k = 0; 7 int temp; 8 9 while(i < length) 10 { 11 k = i; 12 j = i + 1; 13 while(k >= 0) 14 { 15 if(array[k] > array[j]) 16 { 17 temp = array[k]; 18 array[k] = array[j]; 19 array[j] = temp; 20 21 j = k; 22 k--; 23 }else{ 24 break; 25 } 26 } 27 i++; 28 } 29 } 30 31 //标准示例 32 void insertionSort02(int *array, int number_of_elements) 33 { 34 int iter, jter; 35 for(iter = 1; iter < number_of_elements; iter++) 36 { 37 int current_element = array[iter]; 38 jter = iter - 1; 39 while(jter >= 0 && array[jter] > current_element) 40 { 41 array[jter+1] = array[jter]; 42 jter--; 43 } 44 array[jter+1] = current_element; 45 } 46 47 } 48 void printArray(int *array, int length) 49 { 50 int i; 51 for(i = 0; i < length; i++) 52 { 53 printf("%d ", array[i]); 54 } 55 printf(" "); 56 } 57 58 int main(void) 59 { 60 int a[] = {3, 4, 6, 8, 1, 0, 3, -1}; 61 int length = 8; 62 insertionSort02(a, length); 63 printArray(a, length); 64 return 0; 65 }