(1)插入排序
1 void insertSort(int arr[], int n){ 2 int i,j,t; 3 4 for(i=1; i<n; i++){ 5 t = arr[i]; 6 for(j=i-1; arr[j]>t && j>=0; j--){ 7 arr[j+1] = arr[j]; 8 } 9 arr[j+1] = t; 10 } 11 }
(2)简单的快速排序
1 void q_sort(int arr[], int sp, int ep){ 2 int m, i, t; 3 4 if(sp >= ep) 5 return; 6 else{ 7 m = sp; 8 for(i=sp+1; i<=ep; i++){ 9 if(arr[i] < arr[sp]){ 10 m++; 11 t = arr[m]; 12 arr[m] = arr[i]; 13 arr[i] = t; 14 } 15 } 16 17 t = arr[sp]; 18 arr[sp] = arr[m]; 19 arr[m] = t; 20 21 q_sort(arr, sp, m-1); 22 q_sort(arr, m+1, ep); 23 } 24 }
原理:利用分治的思想,将数组排序范围最左端的元素作为参照,将比其小的元素移到其左边,将比其大的元素移动到其右边,在分别对两边的进行递归排序即可。
(3)更好的集中快速排序