# -*- coding: utf-8 -*-
# author: zhonghua
# filename: sort_quick.py
# create: 2016/3/28
# version: 1.0
# 快速排序
def quick(lst, left, right):
if left >= right:
return
key = lst[left]
low = left
high = right
# 大循环
while low < high:
# 必须是lst[high] >= key, 否则left和right会停在一个位置重复循环
while low < high and lst[high] >= key:
high -= 1
lst[low] = lst[high]
# 这里不能是lst[low] <= key, 否则会出现low超出lst范围的情况
while low < high and lst[low] < key:
low += 1
lst[high] = lst[low]
lst[low] = key
# 递归
quick(lst, left, low)
quick(lst, low + 1, right)
if __name__ == '__main__':
lst = [19, 28, 30, 5, 8, 60, 72, 94, 68, 28]
quick(lst, 0, len(lst)-1)
for i in lst:
print i
Python 排序 快速排序
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 个人技术博客地址:http://songmingyao.com/ 原理 在列表中挑选出一个基准值 将列表中的其它元...
- list=['2','4','5','22','6','8','12']; def function_name(l...
- 最优时间复杂度:O(nlogn) 最坏时间复杂度:O(n2) 稳定性:不稳定 python objective-c
- 快速排序是一种非常优秀的排序方法 ,更多见:李飞阳 http://feiyang.li/ 对于包含n个数的输入数组...