快排(QuickSort)是很实用的算法,好用就好用在一个“快”字,而且它采用的是分治的策略,分治顾名思义就是“分而治之”,把一个大问题分成很多小问题逐个去解决,这个思想在处理大数据时相当有效,更详细通俗的原理解析请看这里。

直接贴代码:

def partition(sort_list, left, right):key = sort_list[left]while left < right :while left < right and sort_list[right] >= key :right -= 1if left < right and sort_list[right] < key:sort_list[left] = sort_list[right]left += 1while left < right and sort_list[left] >= key:left += 1if left < right and sort_list[left] < key:sort_list[right] = sort_list[left]right -= 1sort_list[left] = keyreturn left
def quickSort(sort_list, left, right):if left < right :i = partition(sort_list, left, right)quickSort(sort_list, left, right-1)quickSort(sort_list, left+1, right)return sort_list

这段代码可以整合成一个函数,大家可以自行优化。代码以第一个元素为初始基准,采用递归的方法实现。值得一提的是,虽然递归是效率相对较低的方法,但是可以让代码结构清晰易懂,而且分治策略的算法大部分都用递归实现。

转载于:https://blog.51cto.com/chenmg/1396061

用Python实现排序算法——快速排序相关推荐

  1. 排序算法 快速排序 python 0913

    排序算法 快速排序 python 0913 快速排序 思路 定义快排方法 接收参数:原始列表,起始位置,终止位置 判断是否符合快排条件,当起始下标与终止下标相等时,代表只有一个元素,无法排序,退出 一 ...

  2. python 经典排序算法

    python 经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算 ...

  3. python常见排序算法解析

    python--常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分 ...

  4. 排序算法 | 快速排序,算法的图解、实现、复杂度和稳定性分析与优化

    今天讲解一下快速排序算法的原理以及实现.复杂度和稳定性分析与优化 目录 1 快速排序的原理 2 快速排序代码实现 3 复杂度和稳定性分析.优化 4 习题练习 1 快速排序的原理 快速排序是所有内部排序 ...

  5. 排序算法 快速排序【详细步骤图解】

    排序算法 快速排序[详细步骤图解] 快速排序 主要思想 图解 第一轮分割序列 第二轮分割序列 --- 左子序列 小结 第三轮分割序列 --- 右子序列 C++实现 总结 快速排序 给定一个序列:22 ...

  6. 【图解算法】排序算法——快速排序

    简介 首先还是得简单的介绍一下快速排序这个算法. 快速排序(Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出.在平均状况下, ...

  7. JavaScript的排序算法——快速排序

    排序算法(Sorting algorithm)是计算机科学最古老.最基本的课题之一.要想成为合格的程序员,就必须理解和掌握各种排序算法. 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排 ...

  8. 十大经典排序算法-快速排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  9. python实现排序算法_数据结构之(3)python实现排序算法

    常用排序与插入算法 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直 ...

最新文章

  1. Vbox共享文件夹不显示了
  2. 2021,让 AI 不再野蛮生长
  3. 生产过剩下的危机--房价上涨买不起房,房价泡沫破裂后仍然买不起房!
  4. 密码登录源码(jsp+java+数据库)
  5. Linux declare命令、Linux tail 命令
  6. 一键抠除路人甲,昇腾CANN带你识破神秘的“AI消除术”
  7. python代码风格
  8. java知识总结-24
  9. 关于“UDP转发被禁用”的解决办法
  10. 微生物组-扩增子16S分析和可视化(2022.7)
  11. Xcode 禁用indexing
  12. JDBC的一些API
  13. mac os 录屏快捷键_录屏软件哪个好?赶紧收藏录屏好用方法
  14. 2021年全球高级相变材料(PCM)收入大约1513.7百万美元,预计2028年达到3220.4百万美元
  15. 图书系统(查询图书内容)
  16. 横扫阿里、滴滴、美团后,3年经验的Java后端妹子整理出这份厚厚的面经!
  17. Asan基本原理及试用
  18. Linux 之 快捷键,命令总结 --- 三剑客**
  19. 网络广播直播通告:Microsoft Project 2010项目管理概览
  20. Docker在Centos7安装、及命令(详细安装教程)

热门文章

  1. windows--bat--右键菜单
  2. Sharding-JDBC读写分离_MySql主从配置(1)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记015
  3. OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
  4. IOS工作笔记002---windows给VmWare虚拟机OS系统安装VMTools
  5. Linux学习笔记005----CentOS7 vi模式保存并退出
  6. android学习笔记---33_为应用添加多个Activity与参数传递
  7. ubuntu登陆死循环(全是搜狗拼音的锅!!!!!!!!!!!)
  8. 计算机辅助初中数学教学,计算机辅助数学教学的优势
  9. 一步一步写算法(之链表逆转)
  10. 科学家对医疗预印本服务器的影响,美国化学学会将启动化学论文预印本服务