Section 1.快速排序
一、中心思想:分治
- 确定分界点x:q[l],q[r],q[(l+r)/2],或者任取一点
- 调整区间,小于等于x的放在x左边,大于x的放在x右边
- 递归将左边和右边分别排好序
二、核心内容:调整区间
- 暴力做法:
- 另建两个数组a[],b[]
- 对q[l]到q[r]扫描,小于等于x的丢到a,大于x的丢到b
- 先将a存进q,再接着存b
虽然很不优雅,但是咱不差这内存,时间复杂度是一样的0.0
- 优雅的做法:
- 在l处和r处设置一个“指针”i,j
- 如果i处小于等于x,则i右移,直到i处大于x停下;然后判断j处,如果j处大于x,则j左移,直到j处小于等于x停下
- 终止条件: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.快速排序相关推荐
- C指针原理(22)-C指针基础-att汇编-快速排序
第一趟排序 以第一个数-2为标准 xxx@xxx-laptop:~/private/mytest$ gcc -o testpx1 testpx1.s xxx@xxx-laptop:~/private/ ...
- 快速排序简便记_建立和测试股票交易策略的快速简便方法
快速排序简便记 Note from Towards Data Science's editors: While we allow independent authors to publish arti ...
- pthread实现快速排序
1. 实验内容与方法 初始化数组.数组中的值使用c++11中的random类随机生成0到2000之间的double值,将数组中的值存入到文件中,供后续调用使用以保证并行和串行进行快速排序时的数组是相同 ...
- Golang TDD实践报告:快速排序Quick Sort
Golang TDD实践报告:快速排序Quick Sort [阅读时间:约5分钟] 0.项目需求 1.编写符合项目输入输出的一个测试 2.尝试运行测试 3.先使用最少的代码来让失败的测试先跑起来 4. ...
- 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/
大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...
- 数据结构学习(十三)、快速排序
基本思想:通过一趟排序将待排记录分割成独立两个部分,其中一部分记录的关键字均比另一部分记录的关键字小, 则可分别对这两部分继续进行排序,重复操作以上操作,已达到整个序列有序的目的 void Quick ...
- html中section与div,如何在html中的section标签内包含div标签
我正在制作一个完整版块的页面网站,如this.每个页面都有自己的标签.目前我的网页有4个部分(呈现不同的背景颜色).如何在html中的section标签内包含div标签 我的第一部分有一个容器div, ...
- 快速排序(快排)--->注释超详细
基本思想: 1.先选取一个基准值(一般选取数组第一个元素). 2.以第一步选取的基准值为标准,然后从最后一个数值开始一步步向前走将数字与基准值进行比较,如果该值大于基准 ...
- LATEX 在section层级目录上也加上虚线
只添加\tableofcontent会导致section层级目录上没有虚线 可以在tex文件一开始先加上下面这句话: \titlecontents{section}[0pt]{\addvspace{5 ...
最新文章
- WebGIS中基于AGS的画圆查询简析以及通过Polygon来构造圆的算法
- typeof 与 js数据类型
- PHPWind的版权等信息去除的方法
- 低延时直播与RTC融合架构设计③:RTC融合架构设计
- %3c故乡%3e中语言描写的作用是什么,第三单元考试题
- labelImg重新开启工具箱(栏)
- 90 后程序员开发“AI 吵架神器”,专治女朋友各种不服!
- Vue-Plugin开发插件
- mysql 61错误解决方法
- WIN7 VMware Ubuntu虚拟机连接secureCRT及ftp传输文件
- java游戏运行_用jar包运行带GUI的java游戏
- 《统计学习基础-数据挖掘、推理与…
- 适用于dev中c语言的图形库,Dev-C++中使用EGE图形库
- 好歌推荐 绝对经典(中外结合)
- 谁为乔布斯写下「致敬疯子」的广告词
- 华为机试(JAVA)真题Od【A卷+B卷】
- 疫情下的职场生存记:从写简历到面试谈薪的那些技巧和防坑指南
- 根据贷款还款方式(等额本金,等额本息,等本等息,先息后本),计算本息
- JavaScript小项目总结
- 微软确认:从4月13日起,Win10系统将强制卸载旧版Edge浏览器