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获取本机外网ip的方法
Apr 15 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
python http接口自动化脚本详解
Jan 02 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
Apr 17 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
Python延时操作实现方法示例
Aug 14 Python
浅谈django orm 优化
Aug 18 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
Nov 01 Python
分布式全文检索引擎ElasticSearch原理及使用实例
Nov 14 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 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
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
vue awesome swiper异步加载数据出现的bug问题
2018/07/03 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
Python实现在Linux系统下更改当前进程运行用户
2015/02/04 Python
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python模块导入的方法
2019/10/24 Python
python读取excel进行遍历/xlrd模块操作
2020/07/12 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
校园奶茶店创业计划书
2014/01/23 职场文书
安全生产投入制度
2014/01/29 职场文书
网络优化专员求职信
2014/05/04 职场文书
运动员获奖感言
2014/08/15 职场文书
奔腾年代观后感
2015/06/09 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电