python 算法 排序实现快速排序


Posted in Python onJune 05, 2012

QUICKSORT(A, p, r)是快速排序的子程序,调用划分程序对数组进行划分,然后递归地调用QUICKSORT(A, p, r),以完成快速排序的过程。快速排序的最差时间复杂度为O(n2),平时时间复杂度为O(nlgn)。最差时间复杂度的情况为数组基本有序的时候,平均时间复杂度为数组的数值分布较为平均的时候。在平时情况下快速排序跟堆排序的时间复杂度都为O(nlgn),但是快速排序的常数项较小,所以要优于堆排序。
PARTITION(A, p, r)

x ← A[r] 
i ← p - 1 
for j ← p to r - 1 
do if A[j] ≤ x 
then i ← i + 1 
swap(A[i], A[j]) 
swap(A[i + 1], A[r]) 
return i + 1

QUICKSORT(A, p, r)
if p < r 
then q ← PARTITION(A, p, r) 
QUICKSORT(A, p, q - 1) 
QUICKSORT(A, q + 1, r)

实现:
#!/usr/bin/python 
import sys 
def partion(array, p, r): 
x = array[r] 
i = p - 1 
for j in range(p, r): 
if (array[j] < x): 
i+=1 
array[j], array[i] = array[i], array[j] 
i+=1 
array[i], array[r] = array[r], array[i] 
return i 
def quick_sort(array, p, r): 
if p < r: 
q = partion(array, p, r) 
quick_sort(array, p, q - 1) 
quick_sort(array, q + 1, r) 
if __name__ == "__main__": 
array = [1, 3, 5, 23, 64, 7, 23, 6, 34, 98, 100, 9] 
quick_sort(array, 0, len(array) - 1) 
for a in array: 
sys.stdout.write("%d " % a)
Python 相关文章推荐
python抓取某汽车网数据解析html存入excel示例
Dec 04 Python
Python中的面向对象编程详解(上)
Apr 13 Python
python实现复制整个目录的方法
May 12 Python
基python实现多线程网页爬虫
Sep 06 Python
使用py2exe在Windows下将Python程序转为exe文件
Mar 04 Python
Python读取数据集并消除数据中的空行方法
Jul 12 Python
Python中fnmatch模块的使用详情
Nov 30 Python
Pytorch之Variable的用法
Dec 31 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
django queryset 去重 .distinct()说明
May 19 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 Python
python读取mat文件生成h5文件的实现
Jul 15 Python
python操作MySQL数据库的方法分享
May 29 #Python
python利用elaphe制作二维条形码实现代码
May 25 #Python
用python实现批量重命名文件的代码
May 25 #Python
删除目录下相同文件的python代码(逐级优化)
May 25 #Python
ssh批量登录并执行命令的python实现代码
May 25 #Python
巧用Python装饰器 免去调用父类构造函数的麻烦
May 18 #Python
Python使用Socket(Https)Post登录百度的实现代码
May 18 #Python
You might like
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
php无限遍历目录示例
2014/02/21 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
分享一下Python数据分析常用的8款工具
2018/04/29 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
详解Django的CSRF认证实现
2018/10/09 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
Django 请求Request的具体使用方法
2019/11/11 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
五年级英语教学反思
2014/01/31 职场文书
会计学自荐信
2014/06/03 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
放假通知范文
2015/04/14 职场文书
工程催款通知书
2015/04/17 职场文书
芙蓉镇观后感
2015/06/10 职场文书
python某漫画app逆向
2021/03/31 Python
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
Python中的min及返回最小值索引的操作
2021/05/10 Python
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js