排序算法中,我记得最清楚的就是冒泡排序,因为写起来简单,每次一用到排序,马上就把冒泡排序捞出来用,今天又用了冒泡排序,不过趁着空闲,本着优化的想法,决定改成快速排序。

然而,我不会告诉你,快速排序我已经完全忘记是什么思路了,对她的了解仅仅只是这个名字而已。

稍微百度科普科普,然后搬过来与你共享。

快速排序的时间复杂度为O(nlogn),她的思想其实很简单:

1、给定一个数组,然后选择一项作为key,然后把数组改成key的左边都比key小(大),而key的右边都比key大(小),这样就确定了key最终的位置。

2、利用递归思想,继续按照上边的思路对key左边的数组、key右边的数组继续操作,最终就可以达到从小到大(从大到小)排序。

实现步骤:

1、选择第left个元素作为key

2、从右向左找right元素,如果比key大,继续找,否则,将该元素插入到left的位置

3、从右向左找left元素,如果比key小,继续找,否则,将元素插入到right的位置

4、重复2和3,直到left>=right

5、上述1-4放到一个方法中QuickSort(int[] a,int le,int ri),此处递归调用这个方法QuickSort(a,le,left-1);    QuickSort(a,left+1,ri)

原创文章如转载,请注明出处“伊人博客”

简单温习一下快速排序相关推荐

  1. 图解排序算法之3种简单排序(选择,冒泡,直接插入)

    排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现.但是了解这些精妙的思想对我们还是大有裨益的.本文简单温习下最基础的 ...

  2. 时间复杂度为on的排序算法_快速排序的时间复杂度为啥是为O(nlogn)

    本科学过数据结构课程的同学都知道快速排序最好情况下的时间复杂度 ,最坏情况下的时间复杂度为 . 但是大部分书上都没有介绍如何计算快速排序的时间复杂度, 今天我们就来简单推导一下快速排序的时间复杂度. ...

  3. 简单选择排序--转载

    ​ 排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现.但是了解这些精妙的思想对我们还是大有裨益的.本文简单温习下最基 ...

  4. 分治法在排序算法中的应用(JAVA)--快速排序(Lomuto划分、Hoare划分、随机化快排)

    分治法在排序算法中的应用--快速排序 时间复杂度:平均O(nlogn),最坏O(n^2) 如果说归并排序是按照元素在数组中的位置划分的话,那么快速排序就是按照元素的值进行划分.划分方法由两种,本节将主 ...

  5. 排序-交换类排序--快速排序简介

    交换类排序有冒泡和快排 冒泡排序相对简单,之前总结过: https://blog.csdn.net/u011109881/article/details/80038573 快速排序 参考: 数据结构( ...

  6. 算法整理(二)---快速排序的两种实现方式:双边扫描和单边扫描

    首先简单谈下快速排序的特点,时间复杂度O(nLog n),最差时间复杂度O(n^2),平均时间O(nLog n).因为用到了函数栈,空间复杂度为O(lg n),最差为O(n).是一种不稳定的排序方法. ...

  7. 快速排序基本思路(通俗易懂+例子)

    https://blog.csdn.net/code_AC/article/details/74158681 快速排序 今天看到大神写的一篇快速排序的博客,肃然起敬,觉得原来快速排序这么简单 下面进行 ...

  8. 快速排序的时间复杂度

    快速排序的时间复杂度是如何计算的 快速排序简单回顾 时间复杂度 快速排序简单回顾 首先选定一个元素为"轴",轴元素与其他元素依次比较并根据比较的结果交换位置,最后处于一个合适的位置 ...

  9. 机器学习中的集成学习模型实战完整讲解

    2019-12-03 13:50:23 集成学习模型实践讲解 --沂水寒城 无论是在机器学习领域还是深度学习领域里面,通过模型的集成来提升整体模型的性能是一件非常有效的事情,当前我们所接触到的比较成熟 ...

最新文章

  1. 技术大牛养成指南,一篇不鸡汤的成功学实践
  2. 来阿里前 vs 来阿里后
  3. 蚂蚁金服张洁:基于深度学习的支付宝人脸识别技术解秘-1
  4. JavasSript实现秒转换为“天时分秒”控件和TDD测试方法应用
  5. sql中如何统计各种零件的总数量_如何应用GOF设计模式中的构建者模式创建复合对象实例...
  6. 2019年9月全国计算机等级考试报名,关于2019年9月全国计算机等级考试报名的通知...
  7. Python Web开发框架Django
  8. 常见网盘和云存储测评和使用方式
  9. 网站限制IP访问应该怎么办
  10. 使用visual studio code 编写小程序代码
  11. 百度文库解决复制问题
  12. Java实现中英文词典功能
  13. 今日头条笔试题 数列
  14. PS画虚线的几种方法
  15. Mybatis的灵活运用及注意事项
  16. 《mysql必知必会》学习笔记
  17. 【c++】GUARDED_BY(c) 和 PT_GUARDED_BY(c)
  18. 黑客与画家 [美] Paul Graham 读书摘录
  19. Python中mechanize库的简单使用说明
  20. 小程序的gridview布局

热门文章

  1. 【工具】Typora 自定义快捷键
  2. MySQL三种插入方式
  3. latex 学习使用记录(插图片,插表格,插公式,插参考文献)
  4. codeforces 14E. Camels(多维dp)
  5. idea创建分支、合并分支、解决分支冲突
  6. linux定期清理日志脚本,一周清理一次
  7. JAVA语言的介绍和特性
  8. HDU 6617 Enveloping Convex(凸包+半平面交+二分)
  9. ES5ES6 day16
  10. 密码算法测试向量——AES