快速排序的主要原理是设置一个基准值,利用游标将比基准值小的数移到数组左边,比基准值大的数移到数组右边,再将基准值放在中间。将基准值左右两边的数组利用迭代,分别进行相同操作,最后得到完整序列


假设一个数组为 array=[4,2,8,7,1,3,9]
选定基准值为4,mid_value=4,游标 low = 0,high = 6
first 从左向右移动,low 从右向左移动,采用填坑的思路,先移动 high

high= 6,array[high]= 9,满足条件,继续移动;

high= 5,array[high]= 3,不满足条件,将 array[high] 的值赋给 array[low],将数组变为:array=[3,2,8,7,1,3,9],之后考察 low 游标:
low= 0,array[low]= 4,满足条件,继续移动;
low= 1,array[low]= 2,满足条件,继续移动;
low= 2,array[low]= 8,不满足条件,将 array[low] 的值赋给 array[high]
将数组变为:array=[3,2,8,7,1,8,9];

high= 4,array[high]= 1,不满足条件,执行同上操作,array=[3,2,1,7,1,8,9]
low= 2,array[low]= 1,满足条件,继续移动;
low= 3,array[low]= 7,不满足条件,执行操作,array=[3,2,1,7,7,8,9]

high= 3,high=low,达到结束条件, array[high] = array[low] = mid_value = 4
array=[3,2,1,4,7,8,9]

上述过程的参考代码:

    while (low < high):while array[high] >= mid_value and low < high:high = high - 1array[low] = array[high]while array[low] <= mid_value and low < high:low = low + 1array[high] = array[low]array[low] = mid_value

第一次的排序结束,之后将mid_value左右两边的数组 [3,2,1] 和 [7,8,9] 分别按照上述的规则迭代。

完整程序如下:

def quick_sort(array, first, last):if first >= last:      #空列表或无效列表returnlow = firsthigh = lastmid_value = array[low]while (low < high):while array[high] >= mid_value and low < high:high = high - 1array[low] = array[high]while array[low] <= mid_value and low < high:low = low + 1array[high] = array[low]array[low] = mid_valuequick_sort(array, first, low - 1)quick_sort(array, high + 1, last)return array
  1. 迭代思想要多理解
  2. 使用迭代的时候不可以使用数组切片的方式,即 array[0 : low] 这种方法,因为数组切片是生成了一个新的对象,并不是对一开始的数组进行操作。

python快速排序,从小到大相关推荐

  1. Python 快速排序算法【简单易懂,代码直接运行】

    Python 快速排序算法[简单易懂,代码直接运行] 给定你一个长度为 n 的整数数列. 请你使用快速排序对这个数列按照从小到大进行排序. 并将排好序的数列按顺序输出. 输入格式 输入共两行,第一行包 ...

  2. python快速排序 -两种方法

    python 快速排序 使用python实现快速排序 方法一 方法二 使用python实现快速排序 快速排序,⼜称划分交换排序 1.通过⼀趟排序将要排序的数据分割成独⽴的两部分, 其中⼀部分的所有数据 ...

  3. python 快速排序详解

    python 快速排序详解 快速排序函数 def partition(arr,low,high): i = ( low-1 ) #最小元素<索引>pivot = arr[high] #选取 ...

  4. python快速排序实现元素递增

    python快速排序实现元素递增 概念 1.快速排序法又称分割交换法,是冒泡排序法的改进. 基本思想 2.在数据中找到一个虚拟的中间值,然后将所有计划排序的数据分成两部分.在这些数据中,小于中间值的数 ...

  5. Python - 快速排序

    Python - 快速排序 手写一遍快速排序,加深记忆. # 准备被排序的数组 array_to_be_sorted = [int(i) for i in input().split()]def qu ...

  6. python 按从小到大的顺序组合成一个字典_Python实现字典排序、按照list中字典的某个key排序的方法示例...

    本文实例讲述了python实现字典排序.按照list中字典的某个key排序的方法.分享给大家供大家参考,具体如下: 1.给字典按照value按照从大到小排序 排序 dict = {'a':21, 'b ...

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

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

  8. python快速排序解析_快速排序python实现总结

    算法 数据结构 快速排序python实现总结 背景:数据结构与算法是IT相关的工程师一直以来的基础考察重点,很多经典书籍都是用c++或者java来实现,出于对python编码效率的喜爱,于是取sear ...

  9. python快速排序算法循环_算法:快速排序的Python实现

    一.概述 快速排序(quick sort)是一种分治排序算法.该算法首先 选取 一个划分元素(partition element,有时又称为pivot):接着重排列表将其 划分 为三个部分:left( ...

最新文章

  1. shell脚本的规范
  2. TF之RNN:实现利用scope.reuse_variables()告诉TF想重复利用RNN的参数的案例
  3. C#中的事件和委托(续)
  4. Visual studio 2013 err:visual studio no editoroptiondefinition export found for the given option ...
  5. AJAX在VS2005下的基本使用第一篇
  6. VUE router-view 页面布局 (嵌套路由+命名视图)
  7. 7-1 xbmc学习笔记
  8. 计算机类教材的选题策划,电子计算机类科技期刊的选题策划.doc
  9. SCADA数采HAAS数控系统现场实操步骤
  10. 深度装机大师一键重装_就算是电脑小白也能使用自如的重装软件,了解一下?...
  11. OpenGL 加载DDS文件(压缩纹理)
  12. 3d打印材料有哪几种
  13. java 调用企查查API查询企业信息
  14. html英文颜色大全,html英文颜色名称全集
  15. R语言之一元线性回归xt2.15
  16. ` 这个符号叫什么名字?怎么打出来?
  17. 个人博客配置SSL安全文件
  18. 【5G系列】PDCP (Packet Data Convergence Protocol)协议详解
  19. 博图中SCL程序的创建方式
  20. EndNote设置导出参考文献格式为中文国标GBT7714

热门文章

  1. IDE-goland的安装与使用
  2. 腾讯安全亮相服贸会金融服务专题展,多项安全能力助力金融行业数字化转型
  3. 放电式消除BIOS密码(有图)
  4. 培训机构出来的iOS学员怎么了?
  5. linux系统打开终端自动执行:source .bashrc
  6. 修改鼠标光标的形状(二)
  7. java handlebars_Handlebars 模板引擎之前后端用法
  8. 【那啥 完结撒花】tas平台“例子”中的模板整理(上)
  9. GP copy 数据迁移
  10. python语言流程控制语句的格式while循环_Python流程控制-while循环-for循环