快速排序
发布日期:2021-07-01 00:55:03
浏览次数:3
分类:技术文章
本文共 650 字,大约阅读时间需要 2 分钟。
快速排序是采用了分而治之的思想。所谓分而治之就是☞以一个数为基准,将序列中的其他数往他两边“扔”。以从小到大排序为例,比他小的都扔到他的左边,比他大的都扔到他的右边,然后左右两边再分别重复这个操作,不停地分,直到分到每一个分区的基准数的左边或者右边都只剩一个数为止,这时排序也就完成了。
所以快速排序的核心思想就是将小的往左“扔”,只要能实现这个,就与快速排序的思想吻合,从初学者的角度,小的往左扔大的往右扔,首先能想到的往往是最小的往前插,大的往后插,这确实是一个思路,但是我们知道,数组是不擅长插入的,这个思路虽然能够吻合快速排序的思想,但是实现起来就不是“快速”排序,而是“慢速排序”了。所以这种方法不可行,于是就有了下面的舞动算法,这种算法的思想是用交换取代插入,大大提高了排序的算法的速度。
假设序列中有 n 个数,将这n个数放到数组中,舞动算法中一趟快速排序的算法
1 设置两个变量 i、j,排序开始的时候,i=0,j=n-1; 2 以数组第一个元素为关键数据,赋予变量key,即key = A[0]; 3 从 j 开始前搜索,即由后开始向前搜索(j–),找到第一个小于key的值A[j],将A[j]与A[i]交换。 4 然后再从i开始向后搜索,即由前开始向后搜索(++i),找到第一个大于key的A[i],将A[i]和A[j]交换。 5 重复第三步和第四步,直到 i = j。此时就能确保序列中所有元素都与 key 比较过了,且key的左边全部比key小,key的右边全部比key大。转载地址:https://m528964214.blog.csdn.net/article/details/89892547 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月24日 10时40分15秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
(XWZ)的Python学习笔记Ⅱ------面向对象编程
2019-05-01
(XWZ)的Python学习笔记Ⅲ——面向对象高级编程
2019-05-01
(XWZ)的python学习笔记Ⅳ——错误、调试和测试
2019-05-01
(XWZ)的Python学习笔记Ⅴ——I/O编程
2019-05-01
(XWZ)的python学习笔记Ⅶ——正则表达式
2019-05-01
(XWZ)的Python学习笔记Ⅷ--------numpy
2019-05-01
(XWZ)的python学习笔记——pandas
2019-05-01
基于Frobenius范数的标准NMF更新公式推导
2019-05-01
深度学习第一课——神经网络
2019-05-01
高斯混合模型
2019-05-01
(5)CMake入门笔记--CMake官网教程
2019-05-01
(6)CMake入门笔记--CMake官网教程
2019-05-01
(7)CMake入门笔记--CMake官网教程
2019-05-01
(8)CMake入门笔记--CMake语法
2019-05-01
(9)CMake入门笔记--同时生成动态库与静态库
2019-05-01
beyond compare 4 的30天试用期已过-解决方法
2019-05-01
面试海量数据问题
2019-05-01
TensorFlow图优化(一)-CSE(公共子表达式消除)
2019-05-01
TensorFlow图优化(二)-Remapper,layout
2019-05-01
TensorFlow btc allocator
2019-05-01