python 快速排序

  • 使用python实现快速排序
    • 方法一
    • 方法二

使用python实现快速排序

快速排序,⼜称划分交换排序

1.通过⼀趟排序将要排序的数据分割成独⽴的两部分,
其中⼀部分的所有数据都⽐另外⼀部分的所有数据都要⼩
2.然后再按此⽅法对这两部分数据分别进⾏快速排序,整个排序过程可以递归进⾏,以此达到整个数据变成有序序列。

步骤为:

从数列中挑出⼀个元素,称为"基准"(pivot)
重新排序数列,所有元素⽐基准值⼩的摆放在基准前⾯,所有元素⽐基准值⼤的摆在基准的后⾯(相同的数可以到任⼀边)。
在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
递归地(recursive)把⼩于基准值元素的⼦数列和⼤于基准值元素的⼦
数列排序。
递归的最底部情形,是数列的⼤⼩是零或⼀,也就是永远都已经被排序好了。虽然⼀直递归下去,但是这个算法总会结束,因为在每次的迭代(iteration)中,它⾄少会把⼀个元素摆到它最后的位置去。

方法一


# 完成一轮排序过程
def sub_sort(list_,low,high):# 基准数x = list_[low]while low < high:# 后面的数小于x放到前面的空位while list_[high] >= x and high > low:high -= 1list_[low] = list_[high] # 将数往前甩while list_[low] < x and low < high:low += 1list_[high] = list_[low]list_[low] = x # 将基准数插入return low# 快排 low 第一个数序列号 high 最后一个数序列号
def quick(list_,low,high):if low < high:key = sub_sort(list_,low,high)quick(list_,low,key - 1)quick(list_, key+1, high)#快速排序 方法一
quicker = [7,12,29,31,6,3]
quick(quicker,0,5)
print(quicker)

方法二

def quickSort(data,start,end):i = startj =endif i>=j:returnflag =data[start]while i<j:while i<j and data[j]>=flag:j-=1temp=data[j]data[i] =data[j]while i<j and data[i]<=flag:i+=1data[j]=data[i]data[i]=flagquickSort(data,start,i-1)quickSort(data,i+1,end)#方法二的快速排序
data = [45,3,2,6,78,5,33,22,65,46]
quickSort(data,0,len(data)-1)
print(data)

其实两种方法的快速排序是一样的,快速排序的程序挺不好理解的。不常用总忘,笔试面试还考。
这里引用其他人的程序,我有加了我的方法。以此铭记

python快速排序 -两种方法相关推荐

  1. python分析数据差异的方法_用Python的两种方法进行方差分析

    在进行数据分析时,我们往往会遇到要对某个变量的影响因素进行分析的情况,而影响一事物的因素往往是很多的.比如在化工生产中,有温度.压力.剂量.反应时间等因素.每一因素的改变都有可能影响产品的数量和质量. ...

  2. 用ChatGPT处理word表格数据:直接采用ChatGPt和利用ChatGPT编写python脚本两种方法

    目录 摘要 0. 测试数据生成 1. 直接使用ChatGPT进行处理. 2 使用ChatGPT生成python脚本进行处理 3对比分析 4 结束语 摘要 为测试ChatGP在word文档表格的处理能力 ...

  3. 服务器配置公网ftp服务端(软件和python代码两种方法)

    FileZilla Server超详细配置 前言 一.配置教程 1.General settings(常规设置) 2.Passive mode settings(被动传输模式设置) 3.Securit ...

  4. 【Python】两种方法计算平均值、中值、众数、方差、标准差、百分位数

    目录 数据特征 数据集 均值(Mean) - 平均值 中值(Median) - 中点值,又称中位数 众数(Mode) - 最常见的值 方差 标准差(欧式距离) 百分位数 数据特征 特征探索主要是对数据 ...

  5. java快速排序两种方法

    public class FaskSort {private static int count0 = 0;public static void sort(int[] array){if(array.l ...

  6. python字典取值_python 字典中取值的两种方法小结

    python 字典中取值的两种方法小结 如下所示: a={'name':'tony','sex':'male'} 获得name的值的方式有两种 print a['name'],type(a['name ...

  7. 解非线性方程的两种方法与python实现

    写在开头: 非线性方程,就是因变量与自变量之间的关系不是线性的关系,这类方程很多,例如平方关系.对数关系.指数关系.三角函数关系等等.求解此类方程往往很难得到精确解,经常需要求近似解问题.本文将从一道 ...

  8. NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档

    NLP:两种方法(自定义函数和封装函数)实现提取两人对话内容(***分隔txt文档),并各自保存为txt文档 目录 问题探究 实现代码 问题探究 实现代码 f=open("niu.txt&q ...

  9. python列表的排序方法_pythonlist排序的两种方法及实例

    本文主要介绍了python list排序的两种方法及实例讲解.具有很好的参考价值,下面一起来看下吧 对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排 ...

最新文章

  1. python函数都有啥_什么是python函数
  2. mysql7 zip windows_mysql 5.7 windows zip 版本安装配置
  3. 云端飘 String s=new String(abc)创建了几个对象?
  4. php调整表格样式,表格的创建以及样式修改
  5. Tensorflow Python API 翻译(sparse_ops)
  6. mysql设置用户永不过期_在Navicat Premium中管理MySQL用户 - 第2部分:创建新用户
  7. mac securecrt程序无响应_Adobe庆祝Photoshop问世30周年 为Mac和iPad版本提供新功能
  8. 获取oracle自增长id,ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号...
  9. Windows下修改Git bash的HOME路径
  10. android shell强制删除文件夹_手机文件夹都是英文,看不懂、又不敢删?教你如何辨别、释放内存...
  11. 【POJ 2456】【二分答案】Aggressive cows(暑假 No.1)
  12. PSP,CPS1街机模拟器终于出来了(CAPCOM CPS1 Emulators for the PSP),完美!
  13. 以太网转DMX模块核心模块 支持ArtNet sACN DMX RDM
  14. 网站接入qq客服在线聊天
  15. 数字图像处理与Python实现-图像变换-Radon变换
  16. android10.0(Q) MTK 系统相机打开 USBCamera
  17. poscms-说明文档
  18. 滚动轴承常见故障及其基本模型
  19. 小程序登录 之 支付宝授权
  20. 水文预报中的确定性系数如何计算确定

热门文章

  1. 详解 JavaScript 的 IIFE 语法
  2. Java实现五子棋小游戏(附思路讲解,全部代码,游戏截图)
  3. SQL注入详解(第二章手工注入)
  4. INT的取值最大最小范围
  5. 使用http-server开启本地静态资源服务
  6. Ubuntu连接本地服务器失败修复
  7. 金万维异速联结合金蝶K/3远程接入解决方案
  8. eclipse中创建maven项目
  9. (函数题)4-12 判断奇偶性
  10. Java版人脸检测详解下篇:开发java应用并做成docker镜像