|
快速排序:
/**将r位置中的位置移动到正确位置q上,并返回q,使得在a[p]..a[q-1] < a[q],a[q+1]..a[r] > a[q]*/int partition(int a[], int p, int r);void qSort(int a[], int p, int r);void quickSort(int a[], int n) {qSort(a, 0, n - 1);}void qSort(int a[], int p, int r) {int q;while (p < r) {q = partition(a, p, r);qSort(a, p, q - 1);p = q + 1;}}int partition(int a[], int p, int r) {int x, i, j;x = a[r];i = p - 1;for (j = p; j < r; j++) {if (a[j] <= x) {i++;swap(a, i, j);}}i++;swap(a, i, r);return i;} |
|