- 原理 : 將資料逐一插入以排序好的序列中
- Algo :
- for i <- 2 to n do
將a[i] 插入 a[1] ~ a[i-1] 之間適當的位置,使a[1]~a[i]排好
-
#include <stdio.h> #define SIZE 8 void sort(int array[], int size) { // TODO: sort array using insertion sort void insert(int m, int e) { while( m>=0 && array[m]>e ) { array[m+1] = array[m]; m--; } array[m+1] = e; } int i; for ( i = 1; i <= size-1 ; i++) insert( i-1, array[i]); } int main(void) { int numbers[SIZE] ={ 4, 15, 16, 50, 8, 23, 42, 108 }; for (int i = 0; i < SIZE; i++) { printf("%i ", numbers[i]); } printf(" "); sort(numbers, SIZE); for (int i = 0; i < SIZE; i++) { printf("%i ", numbers[i]); } printf(" "); return 0; }
http://ideone.com/xH7fpG