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 随机数生成的代码的详细分析
May 15 Python
Python中统计函数运行耗时的方法
May 05 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
Python抽象类的新写法
Jun 18 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
利用Python脚本生成sitemap.xml的实现方法
Jan 31 Python
在Python函数中输入任意数量参数的实例
Jul 16 Python
简单了解Python3 bytes和str类型的区别和联系
Dec 19 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
Python爬虫基础之简单说一下scrapy的框架结构
Jun 26 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
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
如何离线执行php任务
2017/02/21 PHP
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
理解javascript闭包
2015/12/15 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
Python常见工厂函数用法示例
2018/03/21 Python
Python中关于浮点数的冷知识
2019/09/22 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
深入理解HTML的FormData对象
2016/05/17 HTML / CSS
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
中海讯通笔试题
2015/09/15 面试题
学生自我评语大全
2014/04/18 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
绿色小区申报材料
2014/08/22 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
招标保密承诺书
2015/01/20 职场文书
党员年度个人总结
2015/02/14 职场文书
努力学习保证书
2015/02/26 职场文书