Python实现快速排序算法

快速排序算法是一种基于交换的高效的排序算法,由C.R.A.Hoare于1962年提出,是一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide and conquer algorithm)。

分治法的基本思想

将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。

快速排序的基本思想

先找到一个基准点(一般指数组的中部),然后数组被该基准点分为两部分,依次与该基准点数据比较,如果比它小,放左边;反之,放右边。

左右分别用一个空数组去存储比较后的数据。

最后递归执行上述操作,直到数组长度 <= 1;

动画图

代码实现

def quick_sort(lists, left, right):

'''快速排序'''

# 跳出递归判断

if left >= right:

return lists

# 选择参考点,该调整范围的第1个值

key = lists[left]

low = left

high = right

# 循环判断直到遍历全部

while left

# 从右边开始查找大于参考点的值

while left = key:

right -= 1

lists[left] = lists[right] # 这个位置的值先挪到左边

# 从左边开始查找小于参考点的值

while left

left += 1

lists[right] = lists[left] # 这个位置的值挪到右边

# 写回改成的值

lists[left] = key

# 递归,并返回结果

quick_sort(lists, low, left - 1) # 递归左边部分

quick_sort(lists, left + 1, high) # 递归右边部分

return lists

numbers = [4, 0, 7, 9, 2, 8, 1, 3, 6, 5]

quick_sort(numbers,0,len(numbers)-1)

assert numbers == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

python实现快排算法_Python实现快速排序算法相关推荐

  1. 快速排序算法_Python实现快速排序算法

    排序是算法的入门知识,应用广泛,且在程序员面试中,经常被提及,其中最常考的两大排序算法为快速排序与归并排序,本篇将使用Python语言来分析了解快速排序算法. 思想 快速排序是一种非常高效的排序算法, ...

  2. python快速排序算法_Python实现快速排序算法及去重的快速排序的简单示例

    快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用. 该方法的基本思想是: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或 ...

  3. python实现快排算法(quicksort)

    python实现快排算法(quicksort) 快速排序是对冒泡排序的一种改进.它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后 ...

  4. Python 实现快排、堆排

    Python 实现快排.堆排 1.快排 原理:(升序) 选取数组的首个元素做为中间值,缓存这个中间值,该位置变为空: 从右到左和中间值对比,找到第一个小于中间值的元素,把该值放到左边的空位,该位置变为 ...

  5. python写快排_python 实现快速排序

    Python排序算法之快速排序 快速排序(quickSort) 快排的思想:首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这 ...

  6. java快排原理_Java数据结构与算法——快速排序

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中最常用也是面试中最容易考到的排序算法--快排,包括快排的思 ...

  7. python快速排序代码_Python实现快速排序算法

    原标题:Python实现快速排序算法 Python实现快速排序算法 快速排序算法是一种基于交换的高效的排序算法,由C.R.A.Hoare于1962年提出,是一种划分交换排序.它采用了一种分治的策略,通 ...

  8. java 快排_八大排序-快速排序(搞定面试之手写快排)

    概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...

  9. 用python排序算法_Python - 八大排序算法

    1.序言 本文使用Python实现了一些常用的排序方法.文章结构如下: 1.直接插入排序 2.希尔排序 3.冒泡排序 4.快速排序 5.简单选择排序 6.堆排序 7.归并排序 8.基数排序 上述所有的 ...

最新文章

  1. 马云第一次创业翻译社,差点倒闭,兼卖鲜花和礼物维持终翻身
  2. bootstrap checkbox
  3. P6 计算机系统的层次结构
  4. JS判断是否选中的是表格内当前选中的那一行
  5. python创建变量过程_Python 变量的创建过程详解
  6. C语言设备管理器作业,你知道到吗,C语言竟是如何调用硬件的?
  7. 截取最后一个下划线前面的字符
  8. Mybatis源码之核心流程分析
  9. OpenLayer学习之矢量地图
  10. Silverlight 4.0 Accordion 解决ScrollViewer 的问题
  11. Ubuntu 下J2EE开发环境搭建
  12. 判断端口是否能用_MSP430单片机的端口解析
  13. 《Core Data应用开发实践指南》一2.15 小结
  14. 业务逻辑需要放在service层_CTO问:Service层真的需要接口吗?
  15. 图纸怎么折?(A0,A1,A2,A3の图纸如何折成A4大小)
  16. J2EE是技术还是平台还是框架? 什么是J2EE
  17. php迭代什么意思,迭代关系什么意思
  18. NFA到DFA的转换及DFA的简化
  19. searchsploit 漏洞搜索
  20. 第六十四章 Caché 函数大全 $STACK 函数

热门文章

  1. 回归素材(part5)--白话机器学习算法
  2. HTML基础(part3)--常用标签之HTML标签
  3. 泰坦尼克号幸存率研究
  4. 在 SAP Gateway Demo System ES5 申请用户遇到问题该怎么处理
  5. 使用ABSL(ABAP Script Language)完成SAP Cloud for Customer里Customer Quote以及行项目的增删改查
  6. 为什么Spartacus单元测试里对http返回的Observable对象调用subscribe时,会触发依赖注入的框架代码
  7. SAP Spartacus OccCmsComponentAdapter的findComponentsByIds方法
  8. Angular的大小写风格规范
  9. SAP Marketing Cloud里获取Contact Interaction的postman请求
  10. SAP CRM WebClient UI表格编辑模式的调试明细