Python - 快速排序

手写一遍快速排序,加深记忆。

# 准备被排序的数组
array_to_be_sorted = [int(i) for i in input().split()]def quick_sort(start, end, arr):"""快速排序利用了 list 作为入参时其中的值可以被更更改的性质。:start: 排序起点:end: 排序终点:arr: 需要被排序的序列"""if start >= end:        # 此时排序结束returnlow, high = start, end  # 备份入参pivot = arr[low]        # 起始选择的 轴,注意轴实际上是在下一步循环中最开始被覆盖的小元素的备份(可以这么理解)while low < high:       # 交换轴两边的数据 - 比轴小的放到左边,比轴大的放到右边 - 这样实际上是把 pivot 移到了自己正确的排序位置上while low < high and arr[high] >= pivot:  # 寻找在轴右边且比轴小的元素high -= 1arr[low] = arr[high]                      # 把找到的大元素移到轴的左边,注意此时 high 位置的元素已经没有意义了while low < high and arr[low] < pivot:    # 寻找在轴左边且比轴大的元素low += 1arr[high] = arr[low]                      # 把找到的小元素移到轴的右边,挪入之前 high 腾出来的空位arr[low] = pivot        # 还原轴的值,之前被覆盖了。quick_sort(start, low - 1, arr)  # 轴的位置排好了,排左边的部分quick_sort(low + 1, end, arr)    # 排右边的部分# 排序
quick_sort(0, len(array_to_be_sorted) - 1, array_to_be_sorted)
print(array_to_be_sorted)

Python - 快速排序相关推荐

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

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

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

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

  3. python 快速排序详解

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 在linux上配置oracle9,ORACLE_9安装与删除( linux下)
  2. 《C++编程惯用法——高级程序员常用方法和技巧》——2.9 静态对象的构造
  3. file_get_contents遍历api数据
  4. 《CMake实践》笔记二:INSTALL/CMAKE_INSTALL_PREFIX
  5. 哈夫曼编码压缩率计算_考研经验分享(哈工大计算机)
  6. FTP服务器常规操作
  7. centos mate桌面_CENTOS7安装各种桌面系统 CENTOS安装桌面图形化GUI GNOME/KDE/Cinnamon/MATE/Xfce...
  8. 文件不混淆_Python代码保护 | pyc 混淆从入门到工具实现
  9. 【剑指offer】5.二叉树的镜像和打印
  10. 小米机器狗CyberDog
  11. CSS3 transform 旋转、偏移、缩放属性,CSS3 filter 滤镜,实现图像特效
  12. C语言之结构体 共用体 枚举 typedef
  13. MGV2000_S905L系列_线刷_通刷固件
  14. codecademy SQL lesson2
  15. 【推免】笔试+机试+面试 准备
  16. 56 案例淘宝焦点图布局 网页布局总结
  17. Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
  18. 介绍一款LaTeX编辑器——LyX
  19. 2019长沙学院新生赛(A水,B水,C(整除分块),D水,E(巧数学),F(二分+bfs),H(换根dp),I(线段树)J(dp+倍增+lca))
  20. 解决word 2016中不能加载EndNote x7

热门文章

  1. 计算机开机时间停止,电脑开机时停在主板的界面上就卡了
  2. Cisco学习一:安装GNS3模拟器
  3. IBMMQ window版安装(二)
  4. 解决npm ERR! JSON.parse Failed to parse json
  5. matlab模拟三体运动_如何写出三体的MATLAB程序-代码篇
  6. Linux iptable
  7. CPU 中通用寄存器的作用
  8. 利用阿里maven加速gradle下载速度
  9. 呕心沥血一周,我交出了这篇 List 面试文章,细不细你们定
  10. 数据结构与算法(一)回溯