1 /*----------------------------- 2 * 3 * For 排序算法学习 4 * IDE DEV-CPP4.9.2 5 * Auhtor Cao 6 * Date 2012/10/17 7 *------------------------------ 8 */ 9 #include <stdlib.h> 10 #include <stdio.h> 11 //插入排序 12 void insertSort(int* arr,size_t n) 13 { 14 15 int i,j,key; 16 for(i=1;i<n;i++) //初始:ar={169,45,2,489,469,4,-778,156} 17 { 18 key = arr[i]; 19 j=i-1; 20 while(j>=0&&arr[j]>key) //把key与前面的arr[0~j]进行比较 21 arr[j+1] = arr[j--]; //找到一个比key大的数就把它后移 22 arr[j+1]=key; //上面的循环终止,则j+1就key的位置 23 } 24 /* 25 *Loop0:169,45,2,489,469,4,-778,156 数组原型 取key=arr[2]=2 26 *Loop1:2,169,45,489,469,4,-778,156 key=2比arr[1] arr[0]小,找到arr[2]的位置arr[0]-> 27 *Lopp3:2,169,45,469,489,4,-778,156 进行插入和ArrayList的insert(value,index)一样 28 *Loop4:2,169,45,469,489,4,-778,156 ....... 29 *Loop5:2,4,169,45,469,489,-778,156 ... 30 *Loop6:-778,2,4,169,45,469,489,156 ... 31 *Loop7:-778,2,4,156,169,45,469,489 ... 32 */ 33 } 34 35 int main(int argc, char *argv[]) 36 { 37 int arr[] = {169,45,2,489,469,4,-778,156}; 38 size_t len = (sizeof arr/sizeof arr[0]); 39 insertSort(arr,len); 40 int i; 41 for(i=0;i<len;i++) 42 { 43 printf("%d ,",arr[i]); 44 } 45 //====>-778,2,4,156,169,45,469,489 46 getchar(); 47 return 0; 48 }