快速排序
快速排序代码
1 //按升序排列数组(快速排序) 2 //i:开始索引,j:结束索引 3 void sort(int *a, int i, int j) 4 { 5 int m, n, temp; 6 int k; 7 8 m = i; 9 n = j; 10 k = a[(m + n) / 2]; /*选取的参照*/ 11 12 do 13 { 14 while (a[m]<k && m<j) 15 m++; /* 从左到右找比k大的元素*/ 16 17 while (a[n]>k && n>i) 18 n--; /* 从右到左找比k小的元素*/ 19 20 if (m <= n) /*若找到且满足条件,则交换*/ 21 { 22 temp = a[m]; 23 a[m] = a[n]; 24 a[n] = temp; 25 m++; 26 n--; 27 } 28 }while (m <= n); 29 30 if (m<j) 31 sort(a, m, j); /*运用递归*/ 32 33 if (n>i) 34 sort(a, i, n); 35 }