本文主要介绍用python实现基本的快速排序算法,体会一下python的快排代码可以写得多么简洁。

1. 三言两语概括算法核心思想

先从待排序的数组中找出一个数作为基准数(取第一个数即可),然后将原来的数组划分成两部分:小于基准数的左子数组和大于等于基准数的右子数组。然后对这两个子数组再递归重复上述过程,直到两个子数组的所有数都分别有序。最后返回“左子数组” + “基准数” + “右子数组”,即是最终排序好的数组。

2. Talk is cheap, show the code

# 实现快排
def quicksort(nums):
if len(nums) <= 1:
return nums # 左子数组
less = []
# 右子数组
greater = []
# 基准数
base = nums.pop() # 对原数组进行划分
for x in nums:
if x < base:
less.append(x)
else:
greater.append(x) # 递归调用
return quicksort(less) + [base] + quicksort(greater) def main():
nums = [6,1,2,7,9,3,4,5,10,8]
print quicksort(nums) main()

输出:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

最新文章

  1. 安装R语言扩展包diveRsity-1
  2. eclipse 利用已有c++代码建工程,并编译执行
  3. 如何验证 jemalloc 优化 Nginx 是否生效
  4. ADO.NET 快速入门(十四):使用 SQL Server 检索数据
  5. Beta Round #9 (酱油杯noi考后欢乐赛)乌鸦喝水
  6. sublime每次打开时都提示升级,怎么取消这个弹出框?
  7. 关于TCP的粘包和拆包
  8. 自己动手修改Robotium代码(下)
  9. 012_call和apply区别
  10. WIN10下微信崩溃(已经是最新版)的解决方法
  11. 我的自定义框架 || 基于Spring Boot || 第一步
  12. How to create an rpm package
  13. C# 遇到 which has a higher version than referenced assembly
  14. postgresql-tps
  15. OC 线程操作 - GCD快速迭代
  16. [图解tensorflow源码] [原创] Tensorflow 图解分析 (Session, Graph, Kernels, Devices)
  17. hive组件和执行过程
  18. Digital Audio - Creating a WAV (RIFF) file
  19. js保留两位小数,不四舍五入
  20. VX的快捷方式(转)

热门文章

  1. tcpreplay工具安装使用
  2. VM603:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
  3. Java进阶03 IO基础(转载)
  4. Hibernate每个具体类一张表映射(使用注释)
  5. 用记事本写的java程序引用jar文件
  6. PYTHON -转载,获取淘宝数据01
  7. final和finally面试时最好的回答
  8. 【网络优化|渣速必看】合理设置MTU,提升网络速度
  9. 贝叶斯网(2)Netica:从数据中学习CPT
  10. 二、docker入门