快速排序:

快速排序属于高端的排序算法,是不稳定的排序算法,最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,它的内部循环可以在大部分的架构上很有效率地被实现出来。

算法步骤

从数列中挑出一个元素,称为 "基准"

重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区操作

递归地把小于基准值元素的子数列和大于基准值元素的子数列排序

详细过程如下图:

代码:

def zhengxu (data,left,right):tmp=data[left]while left < right:while left<right and data[right]>=tmp:right-=1data[left]=data[right]while left<right and data[left]<=tmp:left+=1data[right]=data[left]data[left]=tmpreturn left
def quick_sort(data,left,right):if left<right:mid=zhengxu(data,left,right)quick_sort(data,left,mid-1)quick_sort(data,mid+1,right)k=[9,8,7,6,5,4,3,2,1]
quick_sort(k,0,len(k)-1)
print(k)

python排序算法——快速排序时间复杂度O(nlogn)相关推荐

  1. python排序算法的时间复杂度_Python算法的时间复杂度和空间复杂度(实例解析)

    算法复杂度分为时间复杂度和空间复杂度. 其作用: 时间复杂度是指执行算法所需要的计算工作量: 而空间复杂度是指执行这个算法所需要的内存空间. (算法的复杂性体现在运行该算法时的计算机所需资源的多少上, ...

  2. 排序算法 快速排序 python 0913

    排序算法 快速排序 python 0913 快速排序 思路 定义快排方法 接收参数:原始列表,起始位置,终止位置 判断是否符合快排条件,当起始下标与终止下标相等时,代表只有一个元素,无法排序,退出 一 ...

  3. Python排序算法总结

    Python排序算法总结 递归 在正式讲算法之前,先介绍一下递归.递归是一种解决问题的思路. 特点 调用自身 必须有一个明确的结束条件,比如if... 递归的两个阶段: 递推(压栈):到某个阶段,该阶 ...

  4. 各种排序算法的时间复杂度对比

    各种排序算法的时间复杂度对比 排序算法 最坏时间复杂度 平均时间复杂度 最优时间复杂度 空间复杂度 稳定性 冒泡排序 O(n^2) O(n^2) O(n) O(1) 稳定 插入排序 O(n^2) O( ...

  5. 各种排序算法的时间复杂度

    时间复杂度 当我们评价一个算法的时间性能时,主要标准就是算法的渐近时间复杂度,在算法分析时,经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度 ...

  6. 排序算法 快速排序【详细步骤图解】

    排序算法 快速排序[详细步骤图解] 快速排序 主要思想 图解 第一轮分割序列 第二轮分割序列 --- 左子序列 小结 第三轮分割序列 --- 右子序列 C++实现 总结 快速排序 给定一个序列:22 ...

  7. 各个排序算法的时间复杂度、稳定性、快排的原理以及图解

    目录 一.数据结构的八大排序算法总结笔记: 1.常见的数据结构排序算法如下图所示: 2.常见数据结构排序算法的时间复杂度.空间复杂度.稳定性介绍如下图所示: 二.排序算法逐一介绍: 1.直接插入排序: ...

  8. c语言验证完成排序算法的时间,排序算法的时间复杂度和空间复杂度

    常用的内部排序方法有:交换排序(冒泡排序.快速排序).选择排序(简单选择排序.堆排序).插入排序(直接插入排序.希尔排序).归并排序.基数排序(一关键字.多关键字). 一.冒泡排序: 1.基本思想: ...

  9. python排序算法——插入排序

    python排序算法--插入排序 文章目录 python排序算法--插入排序 一.前言 二.描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序算法是指 ...

  10. 各个排序算法及其时间复杂度

    各个排序算法及其时间复杂度 一.内部排序: 1.稳定的排序算法 1.1 冒泡排序 1.1.1 冒泡排序流程 1.1.2 冒泡排序的实现 1.2 插入排序 1.2.1 插入排序流程 1.2.2 插入排序 ...

最新文章

  1. Go学习之-用vscode写go代码遇到的问题
  2. android handler,Android中Handler原理
  3. 被“轻视”的CV·AR的背后核心技术
  4. 数据库开发——MySQL——约束条件与表关系
  5. 图解Tomcat类加载机制(阿里面试题)
  6. CRM Fiori offline技术实现:index.html under CRM.www folder
  7. 7-37 抓老鼠啊~亏了还是赚了? (20 分)
  8. 经典的破解安全论坛,你会在这些论坛学习更多的知识。
  9. 计算机点击右键管理闪退,Win7系统桌面鼠标右键菜单出现闪退解决方法
  10. 数据结构试卷及答案(七)
  11. 【Kafka】(二十四)轻量级流计算 Kafka Streams 实践总结
  12. 微信小程序简单介绍及例子,小白可看
  13. 使用Java制作一个简易的远控终端
  14. 凸函数-convex function
  15. Ubuntu 16.04 英伟达驱动、常用软件以及虚拟环境的安装
  16. 根据字段值取字段别名
  17. 爬虫python编程与cvi编程_无编程经验学习Python做爬虫,目前遇到困难,请各位指点下?...
  18. Vue项目——Vue开发掘金WebApp(仿掘金App)
  19. 30家TWS蓝牙SOC芯片厂集成CPUDSPCodec IP比较
  20. PHP的create方法,Thinkphp中Create方法深入探究

热门文章

  1. 08版新精粹45集实战技巧视频教程免费下载wordExcel
  2. 发票验证出现服务器证书出错,网上认证发票平台证书密码出现错误怎么办?
  3. Google Chrome Frame 自定义渲染方式,调用ActiveX
  4. linux驱动加载 动态加载 静态加载 自动加载
  5. wifi 小米pro 驱动 黑苹果_macOS安装教程兼小米Pro安装过程记录
  6. 从零开始学Android(一)
  7. VS2012注册密钥
  8. 小米多主题思路分析-重定向资源篇
  9. oauth2基本概念
  10. 光猫修改html灰色选项,电信光猫怎么设置(修改)wifi密码?