请选择 进入手机版 | 继续访问电脑版

快速排序

[复制链接]
轩峰毅飞 发表于 2021-1-1 18:34:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
快速排序实现

  1. #include using namespace std;#define MAX 1e6+10;int nArr[MAX];int nNum;void QuickSort(int *p, int nLeft, int nRight){        if(nLeft >= nRight)//当只有一个元素或没有元素时 直接返回        {                return;        }                //i j 指向的位置写法与下面while循环中的写法有关         //是为了每次执行完swap操作后 可以大概自动指向下一次的界限        int i = nLeft - 1;        int j = nRight + 1;        //选取数组中间的谁人数字 作为对照        int nTemp = nArr[(nRight - nLeft)/2 + nLeft];        while(i < j)        {                //先i++                  do i++; while(nArr[i] < nTemp);                //先j--                do j--; while(nArr[j] > nTemp);                if(i < j) swap(nArr[i], nArr[j]);                //为什么要先i++ j-- 就是在执行完swap之后 要向中间移动        }         //递归处理惩罚左右         //这里为什么界限是j呢?换成i行不可 留给各人思考吧!        QuickSort(p, nLeft, j);        QuickSort(p, j+1, nRight);}
复制代码
来源:https://blog.csdn.net/ZZHinclude/article/details/112006751
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )