一、中心思想:分治

  1. 确定分界点x:q[l],q[r],q[(l+r)/2],或者任取一点
  2. 调整区间,小于等于x的放在x左边,大于x的放在x右边
  3. 递归将左边和右边分别排好序

二、核心内容:调整区间

  • 暴力做法:
  1. 另建两个数组a[],b[]
  2. 对q[l]到q[r]扫描,小于等于x的丢到a,大于x的丢到b
  3. 先将a存进q,再接着存b

虽然很不优雅,但是咱不差这内存,时间复杂度是一样的0.0

  • 优雅的做法:
  1. 在l处和r处设置一个“指针”i,j
  2. 如果i处小于等于x,则i右移,直到i处大于x停下;然后判断j处,如果j处大于x,则j左移,直到j处小于等于x停下
  3. 终止条件:i=j

三、上代码!

void quick_sort(int q[], int l, int r)
{if (l >= r)return;int x = q[(l + r) / 2], i = l - 1, j = r + 1;  //这里将l-1,i+1的原因是下面采用的是do-while循环while (i < j){doi++;while (q[i] <= x);  //采用do-while循环的原因是需要先移动再判断(判断完一次后下一次判断前需要先移动)doj++;while (q[j] > x);if (i < j)swap(q[i], q[j]);}quick_sort(q, l, j);quick_sort(q, j + 1, r);  //对x左边和右边分别递归
}

四、配套练习

AcWing785https://www.acwing.com/activity/content/problem/content/819/AcWing786https://www.acwing.com/activity/content/problem/content/820/

Section 1.快速排序相关推荐

  1. C指针原理(22)-C指针基础-att汇编-快速排序

    第一趟排序 以第一个数-2为标准 xxx@xxx-laptop:~/private/mytest$ gcc -o testpx1 testpx1.s xxx@xxx-laptop:~/private/ ...

  2. 快速排序简便记_建立和测试股票交易策略的快速简便方法

    快速排序简便记 Note from Towards Data Science's editors: While we allow independent authors to publish arti ...

  3. pthread实现快速排序

    1. 实验内容与方法 初始化数组.数组中的值使用c++11中的random类随机生成0到2000之间的double值,将数组中的值存入到文件中,供后续调用使用以保证并行和串行进行快速排序时的数组是相同 ...

  4. Golang TDD实践报告:快速排序Quick Sort

    Golang TDD实践报告:快速排序Quick Sort [阅读时间:约5分钟] 0.项目需求 1.编写符合项目输入输出的一个测试 2.尝试运行测试 3.先使用最少的代码来让失败的测试先跑起来 4. ...

  5. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  6. 数据结构学习(十三)、快速排序

    基本思想:通过一趟排序将待排记录分割成独立两个部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分继续进行排序,重复操作以上操作,已达到整个序列有序的目的 void Quick ...

  7. html中section与div,如何在html中的section标签内包含div标签

    我正在制作一个完整版块的页面网站,如this.每个页面都有自己的标签.目前我的网页有4个部分(呈现不同的背景颜色).如何在html中的section标签内包含div标签 我的第一部分有一个容器div, ...

  8. 快速排序(快排)--->注释超详细

    基本思想:         1.先选取一个基准值(一般选取数组第一个元素).         2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...

  9. LATEX 在section层级目录上也加上虚线

    只添加\tableofcontent会导致section层级目录上没有虚线 可以在tex文件一开始先加上下面这句话: \titlecontents{section}[0pt]{\addvspace{5 ...

最新文章

  1. WebGIS中基于AGS的画圆查询简析以及通过Polygon来构造圆的算法
  2. typeof 与 js数据类型
  3. PHPWind的版权等信息去除的方法
  4. 低延时直播与RTC融合架构设计③:RTC融合架构设计
  5. %3c故乡%3e中语言描写的作用是什么,第三单元考试题
  6. labelImg重新开启工具箱(栏)
  7. 90 后程序员开发“AI 吵架神器”,专治女朋友各种不服!
  8. Vue-Plugin开发插件
  9. mysql 61错误解决方法
  10. WIN7 VMware Ubuntu虚拟机连接secureCRT及ftp传输文件
  11. java游戏运行_用jar包运行带GUI的java游戏
  12. 《统计学习基础-数据挖掘、推理与…
  13. 适用于dev中c语言的图形库,Dev-C++中使用EGE图形库
  14. 好歌推荐 绝对经典(中外结合)
  15. 谁为乔布斯写下「致敬疯子」的广告词
  16. 华为机试(JAVA)真题Od【A卷+B卷】
  17. 疫情下的职场生存记:从写简历到面试谈薪的那些技巧和防坑指南
  18. 根据贷款还款方式(等额本金,等额本息,等本等息,先息后本),计算本息
  19. JavaScript小项目总结
  20. 微软确认:从4月13日起,Win10系统将强制卸载旧版Edge浏览器

热门文章

  1. jlink-v8 固件修复
  2. SQL之strftime()函数
  3. python爬取b站弹幕并进行数据可视化
  4. 时序数据库如何支持秒级上亿数据的查询分组和聚合运算
  5. dcf是ea211发动机吗_神车发动机解读:EA211到底牛掰在哪儿?
  6. windows浏览器CSS样式丢失的解决方法
  7. 企业如何挑选网站空间,需要注意哪些事项?
  8. python之matplotlib制作双Y轴图含详细代码解释
  9. 酒店app开发对客人的帮助有哪些?
  10. 粤电博贺码头计算机管理系统中标,粤电博贺煤炭码头项目档案顺利通过省交通运输厅专项验收...