说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除

作者:zhu6201976

博客:https://blog.csdn.net/zhu6201976

一、快速排序

快速排序(Quicksort)是对冒泡排序算法的一种改进。

快速排序算法通过多次比较和交换来实现排序,其排序流程如下:

(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。  ​​​​​​​

(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。

(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。

(4)重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧部分的顺序。当左、右两个部分各数据排序完成后,整个数组的排序也就完成了。

二、快速排序分析

三、时间复杂度

  • 最优时间复杂度:O(nlogn)
  • 最坏时间复杂度:O(n2)
  • 稳定性:不稳定

四、快速排序演示

五、完整代码

"""
@Time : 2021/7/18 12:53
@Author : Tesla
@File : 7.快速排序.py
@Software: PyCharm
@Csdn : https://blog.csdn.net/zhu6201976
"""
import randomdef quick_sort(data):"""快速排序"""if len(data) >= 2:  # 递归入口及出口mid = data[len(data) // 2]  # 选取基准值,也可以选取第一个或最后一个元素left, right = [], []  # 定义基准值左右两侧的列表data.remove(mid)  # 从原始数组中移除基准值for num in data:if num >= mid:right.append(num)else:left.append(num)return quick_sort(left) + [mid] + quick_sort(right)else:return dataprint(quick_sort([random.randint(0, 100) for _ in range(10)]))

Python实现快速排序相关推荐

  1. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  2. python学习——python实现快速排序算法

    python实现快速排序算法 一.快速排序算法实现原理 基本思想 具体步骤 二.图解快速排序 三.py代码实现快速排序算法 一.快速排序算法实现原理 基本思想 先从数列中取出一个数作为基准数. 分区过 ...

  3. Python实现快速排序(非递归实现)

    快速排序同样也是分治的思想,核心依然是分而治之,各个击破. 快速排序的思想是:找到一个数字x,对数组nums进行排序,使x左侧的数字都小于x,右侧的数字都大于x,然后对左侧和右侧重复同样的操作,直到所 ...

  4. python实现快速排序算法_基础算法:快速排序(python实现)

    算法原理 快速排序是一个具有较高性能的排序算法,其主要思想如下: 对数组中的某个元素,确定其在数组中的排序位置,即在其之前的所有元素均小于该元素,在其之后的均大于该元素.对小元素组和大元素组同样执行该 ...

  5. python列表快速排序_python 实现快速排序

    一.快排思想 快速排序可以理解为是对冒泡排序的一种改进,把一组数,按照初始选定的标杆(参照数), 分别从两端开始排序,左端'i'只要小于标杆(参照数)的数,右端'j'只要大于标杆(参照数)的数, i- ...

  6. Python实现快速排序算法

    快速排序也是使用了分治思想的排序方法,但与归并排序不一样的是"分"的时候的依据.归并排序"分"的依据是对半分,不管大小,而快速排序则是选定数组中的一个值,以这个 ...

  7. Python 实现快速排序算法

    快速排序(Quick sort) 快速排序(Quick sort),又称划分交换排序 快速排序算法如下: 从数列中挑出一个元素,称为"基准"(pivot), 重新排序数列,所有元素 ...

  8. 算法 排序 python 实现--快速排序

    主要分为两个子算法,PARTITION(A, p, r)以A[r]为基准对数组进行一个划分,比A[r]小的放在左边,比A[r]大的放在右边.QUICKSORT(A, p, r)是快速排序的子程序,调用 ...

  9. 用Python实现快速排序

    快速排序 快速排序(英语:Quicksort),⼜称划分交换排序(partitionexchangesort),通过⼀趟排序将要排序的数据分割成独⽴的两部分,其中⼀部分的所有数据都⽐另外⼀部分的所有数 ...

  10. Python版快速排序算法

    Python版冒泡排序算法请参考Python版冒泡法排序算法 Python版选择排序算法请参考Python版选择排序算法 from random import randint def quickSor ...

最新文章

  1. c语言输入姓名比较是否同性,C语言基础--选择题
  2. What is Wiki?
  3. python装饰器-如何更通俗地讲解Python的装饰器?
  4. in the java search_elasticsearch which: no java in (/sbin:/bin:/usr/sbin:/usr/bin)
  5. linux把svs文件分割,freeebsd,pkg_add,svsup,make改服务器的设定
  6. 开源项目贡献者_我如何从一名贡献者转变为一个开源项目维护者
  7. JAVA获得天气json数据的方法,获取从天气预报接口返回回来的json数据
  8. 想成为一个高效的Web开发者吗?来看看大牛分享的经验吧
  9. flutter框架优缺点_小程序框架全面测评
  10. 让CI框架支持traits新特性
  11. EDA工具对芯片产业的重要性知识科普
  12. exchange2016卸载报错安装程序无法卸载,因为mscorsvw(9476)具有打开的文件
  13. Kubernetes的Limits和Requests
  14. 查看电脑系统是否永久激活
  15. 有趣的python小程序
  16. 查找节点下的所有子节点(包括孙节点和隐藏节点)
  17. 百度周景博:POI知识图谱的构建及应用
  18. 什么是矩阵java_java矩阵
  19. C++虚函数表的应用
  20. 我的世界java版boat启动器_我的世界boat启动器mio版

热门文章

  1. linux kvm usb设备,KVM使用USB设备的方法
  2. 互联网创新创业大赛优秀范例_互联网创业大赛优秀作品_ 创新创业大赛优秀作品...
  3. 中国这10家慕课网站,您需要知道!
  4. 2019.07.22--自我总结--分析问题三W原则+做事PDCA法则
  5. Jersey框架一:Jersey RESTful WebService框架简介
  6. APS系统在注塑行业的应用
  7. 计算机开机桌面黑,电脑能正常启动但屏幕全黑原因和解决方法
  8. 有效沟通bic法则_有效沟通的五个法则
  9. t450加固态硬盘教程_ThinkPad T450 开箱安装内存SSD升级Windows10过程小记-5X兴趣社区...
  10. IEEE Fellow、AAAS Fellow 同日公布,清华唐杰、京东郑宇等数十位华人入选