AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

快速排序算法模板

作者: 作者的头像   wuog ,  2019-07-23 10:54:58 ,  所有人可见 ,  阅读 2811


2


1
## 基本思想   :分治

例如:
3(i=0) 1 7 9 8(j=n-1)
我们选取随机值如果为3,然后i++,j- -去判断与随机值的大小比较
—>1 3 7 9 8
然会在重复该过程,但是要注意边界问题

----------

## 代码模板
void quick_sort(int q[], int l, int r)
{
    if (l >= r) return;// 判断排序的数字长度

    int i = l - 1, j = r + 1, x = q[l];
    //选取双指针i,j与 中间随机值
    while (i < j)
    {
        //进行判断比较大小并交换值
        do i ++ ; while (q[i] < x);
        do j -- ; while (q[j] > x);
        if (i < j) swap(q[i], q[j]);
        //注意!!!使用语言有没有swap方法(如果没有建议用位运算)
        else break;
    }
    //再将俩个部分(小于等于随机值||大于小于随机值)再次划分
    quick_sort(q, l, j),;
    quick_sort(q, j + 1, r);
}

----------
如果不理解,可以去理解一下分治,看一下yxc大佬的分享
----------


0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息