图解快速排序
来源:互联网 发布:npt内螺纹软件 编辑:程序博客网 时间:2024/05/02 00:41
快速排序是冒泡排序的改进版,也是最好的一种内排序。
思想:1.在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素;
2.将待排序的元素进行分区,比基准元素大的元素放在它的右边,比其小的放在它的左边;
3.对左右两个分区重复以上步骤直到所有元素都是有序的。
所以我是把快速排序联想成东拆西补或西拆东补,一边拆一边补,直到所有元素达到有序状态。
下面再看看示图理解下吧:
分析:1.当分区选取的基准元素为待排序元素中的最大或最小值时,为最坏的情况,时间复杂度和直接插入排序的一样,移动次数达到最大值
Cmax = 1+2+...+(n-1) = n*(n-1)/2 = O(n2) 此时最好时间复杂为O(n2)
2.当分区选取的基准元素为待排序元素中的"中值",为最好的情况,时间复杂度为O(nlog2n)。
3.快速排序的空间复杂度为O(log2n).
4.当待排序元素类似[6,1,3,7,3]且基准元素为6时,经过分区,形成[1,3,3,6,7],两个3的相对位置发生了改变,所是快速排序是一种不稳定排序。
阅读全文
0 0
- 图解快速排序算法
- 图解快速排序
- 快速排序 过程图解
- 图解快速排序
- 图解快速排序
- 图解快速排序
- 快速排序 图解算法过程
- 算法图解的快速排序
- 小学生图解排序算法:⑤快速排序
- 图解Java快速排序(基于数组)
- 《算法图解》书摘-递归/快速排序
- 图解算法练习--快速排序(GO实现)
- 图解算法练习--快速排序(PHP实现)
- 《算法图解》第四章快速排序
- 【图解算法】排序算法——快速排序
- 快速排序 图解算法过程 另一种方法 大同小异
- 算法 -- Java实现快速排序(图解 + 代码实现)
- 图解"数据结构--内部排序算法"----交换排序:冒泡排序、快速排序
- 程序员面试金典(2):原串翻转(python)
- POJ a simple problem of Integers
- Spring Data Jpa+SpringMVC+Jquery.pagination.js实现分页
- poj 1149 PIGS 最大流模型
- 插入排序之希尔排序
- 图解快速排序
- 腾讯安全部门-大数据挑战赛-learner队伍(进入复赛)
- RILD
- keras中文文档笔记15——面向小数据集构建图像分类模型
- Servlet回顾总结
- C语言中的关键字
- Linux系统基本操作与命令-1
- node基础【02】异步编程01
- Jobdu1457 非常可乐(BFS)