python 快速排序详解

快速排序函数

def partition(arr,low,high): i = ( low-1 )         #最小元素<索引>pivot = arr[high]     #选取最右边的数为基准for j in range(low , high): # 判断当前元素是否小于或等于 pivot,有的话,和最小索引的值进行调换 if   arr[j] <= pivot: i = i+1                         #有调换,i的索引值加1arr[i],arr[j] = arr[j],arr[i]   #把最小元素索引指向的值和 基数左边小于它的数交换。arr[i+1],arr[high] = arr[high],arr[i+1]  #把除去刚调换的值之后的索引,与最右边的数(基准数)交换 return ( i+1 )                          #返回索引# arr[] --> 排序数组
# low  --> 起始索引
# high  --> 结束索引# 快速排序函数
def quickSort(arr,low,high): if low < high: pi = partition(arr,low,high) quickSort(arr, low, pi-1) quickSort(arr, pi+1, high) arr = [10, 7, 8, 9, 1, 5]
n = len(arr)
quickSort(arr,0,n-1)
print ("排序后的数组:")
print(arr)

eg:
快排过程

[10,7,8,9,1,5]   原始列表
[1,7,8,9,10,5]   将左边小于基准5的数与最小索引指向的数交换[1,5,8,9,10,7]   将原先的基准数5 与 除去刚调换的值之后的索引7交换(索引进行了i+1操作)
[1,5,7,9,10,8]   以此类推,将基准数7 为标准,判断左边的数有无小于基准数7的,没有,直接交换基准数与初始索引数,初始索引数为1+1
[1,5,7,8,10,9]  同上。
[1,5,7,8,9,10]  同上

python 快速排序详解相关推荐

  1. python 快速排序 详解_数据结构与算法:快速排序(原理讲解+python实现)

    快速排序 快速排序是一种基于分治法(Divide and Conquer)的排序算法 它之所以称为快速排序是因为它的平均时间复杂度为O(nlogn),最坏情况下是O(n2) 但是这样的情况不常见 一般 ...

  2. python区块链开发_Fabric区块链Python开发详解

    Hyperledger Fabric是最流行的联盟区块链平台.Fabric区块链Python开发详解课程 涵盖Fabric区块链的核心概念.Fabric网络搭建.Node链码开发.Python应用开发 ...

  3. python装饰器setter_第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter...

    上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一.    案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...

  4. 【python】详解类class的继承、__init__初始化、super方法

    原文链接; https://blog.csdn.net/brucewong0516/article/details/79121179?utm_medium=distribute.pc_relevant ...

  5. python与golang_Golang与python线程详解及简单实例

    Golang与python线程详解及简单实例 在GO中,开启15个线程,每个线程把全局变量遍历增加100000次,因此预测结果是 15*100000=1500000. var sum int var ...

  6. python 最小二乘法_最小二乘法及其python实现详解

    最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由马里·勒让德于1806年提出).它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得 ...

  7. 【python】详解multiprocessing多进程-Pool进程池模块(二)

    [python]详解multiprocessing多进程-process模块(一) [python]详解multiprocessing多进程-Pool进程池模块(二) [python]详解multip ...

  8. 常用排序:冒泡排序与快速排序详解,看完这篇就够了!风马博客

    常用排序:冒泡排序与快速排序详解. 在排序算法中,冒泡排序和快速排序可以算是排序算法入门必会的两种排序了,今天和大家来分析一下如何快速理解并掌握这两种排序.首先冒泡排序是初学者最常用的排序,所以我们先 ...

  9. 【python】什么是序列,Python序列详解

    什么是序列,Python序列详解 概述 序列索引 序列切片 序列相加 序列相乘 检查元素是否包含在序列中 序列相关的内置函数 range 快速初始化数字列表 概述 所谓序列,指的是一块可存放多个值的连 ...

最新文章

  1. Angular应用中tsconfig.json文件配置说明及配置全局路径映射
  2. dowhlie java_Java while和do whlie语句
  3. 【赠送】IT技术视频教程,白拿不谢!思科、华为、红帽、数据库、云计算等等
  4. 雄迈400万TF卡内核补丁
  5. laravel打印sql语句_SQL语句为什么慢?索引为什么失效?
  6. SpringSecurity分布式整合之分布式认证流程说明
  7. react native android 打包
  8. java jdk文档查询方法_查询Java JDK文档的元数据
  9. python可视化案例书籍推荐_我用python5年后,我发现学python编程必看的三本书!...
  10. Javascript特效:吸顶
  11. HDU5447 Good Numbers
  12. 雅礼集训 Day6 T2 Equation 解题报告
  13. Python3调用新浪微博API抓取数据
  14. shell间接变量引用两种方式
  15. 北京邮电大学计算机学院2020复试,预览北京邮电大学计算机学院2020研究生复试流程...
  16. 【MTSP】遗传和粒子群算法求解多旅行商问题【Matlab 1156期】
  17. pentaho mysql_pentaho bi server 配置MySQL数据库
  18. 女人健身操必知的健康常识
  19. C#实战009:Excel操作-删除指定的Excel工作表
  20. 50元打造双网卡负载均衡服务器(Network Load Balancing)

热门文章

  1. android wear安装不了,Android Wear - WearablePkgInstaller:软件包安装失败returnCode -104
  2. 操作系统(2021秋季) | 哈工大(深圳)实验
  3. 十款非常好用的的HTML生成工具推荐
  4. 什么是渗透测试?| 什么是渗透测试?
  5. 体验版微信小程序为什么不能登录
  6. 常用正则表达式表(简洁无废话)
  7. 域名解析-子域名配置
  8. NLP入门第一步:6种独特的数据标记方式
  9. 毫米波雷达笔记(3):多普勒频移推导
  10. Java求三角形面积(含可运行代码)