排序【未完待续】
快速排序
快排的思想主要在于每次划分确定一个元素的位置,使其左侧的元素均小于它,右侧的元素均大于它,再对左右两侧递归。
int partition(int a[], int low, int high) { int x = a[high]; // 先以最右侧作为枢轴 int j = low - 1; // j记录的是最后一个比枢轴小的位置 for (int i = low; i < high; i++) { if (a[i] < x) // 如果a[i]比枢轴小,就将j右移一个单位,并交换i和j所指元素 { int temp; j++; temp = a[j]; a[j] = a[i]; a[i] = temp; } } a[high] = a[j + 1]; // 循环结束后,从low到j的位置所对应的元素均小于枢轴,将第j+1个元素和枢轴位置交换 a[j + 1] = x; return j + 1; } void quickSort(int a[], int low, int high) { if (low < high) { int middle = partition(a, low, high); quickSort(a, low, middle - 1); quickSort(a, middle + 1, high); } }
未完待续