快速排序

Posted on 2021-08-31  9 Views


(1)快排 ———基于分治的思想

第一步:确定分界点
常用方式:左边界,右边界,中值

第二步:调整区间
(1)暴力模拟
(2)

void quick_sort(int q[], int l, int r)
{
    if (l >= r) return;//如果左边界大于右边界,停止

    int i = l - 1, j = r + 1, x = q[l];//x的初值可以任意
    while (i < j)
    {
        do i ++ ; while (q[i] < x);
        do j -- ; while (q[j] > x);
        if (i < j) swap(q[i], q[j]);
    }
    quick_sort(q, l, j), quick_sort(q, j + 1, r);
}

作者:yxc
链接:https://www.acwing.com/blog/content/277/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

第三步:递归处理左右两端


欢迎来到parafish的个人博客,这里是一个正在努力的ctfer

路虽远,行则必至