// 快速排序的partition函数可以作为查找第k大的数的一种o(logn)的算法,在查找第K大的数,或者最小的k个数具有优势
int main() {
int array[] = {3, 7, 9, 9, 10, 12, 17, 23, 3};
quick_sort(array, 0, 8);
}
int quick_sort_part(int a[], int left, int right) {
if (left > right || a == nullptr) {
return -1;
}
int i = left - 1;
int j = left;
int pivot = a[right];
for (; j < right; j++) {
if (a[j] < pivot) {
i++;
if (i != j) {
swap(&a[i], &a[j]);
}
}
}
swap(&a[++i], &a[j]);
return i;
}
int quick_sort(int a[], int left, int right) {
// 递归结束条件
if (left >= right) {
return 0;
}
int mid = quick_sort_part(a, left, right);
quick_sort(left, mid - 1);
quick_sort(mid + 1, right);
return 0;
}
快速排序和它的partition函数
最新推荐文章于 2021-10-16 15:27:54 发布