当前位置:  编程技术>python

python 算法 排序实现快速排序

    来源: 互联网  发布时间:2014-09-04

    本文导语:  QUICKSORT(A, p, r)是快速排序的子程序,调用划分程序对数组进行划分,然后递归地调用QUICKSORT(A, p, r),以完成快速排序的过程。快速排序的最差时间复杂度为O(n2),平时时间复杂度为O(nlgn)。最差时间复杂度的情况为数组基本有序...

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实现冒泡,插入,选择排序简单实例
  • python字典多条件排序方法实例
  • python 实现插入排序算法
  • python冒泡排序算法的实现代码
  • python 快速排序代码
  • python实现排序算法
  • python插入排序算法的实现代码
  • Python学习笔记_数据排序方法
  • python选择排序算法的实现代码
  • python算法学习之桶排序算法实例(分块排序)
  • python3.0 字典key排序
  • python快速排序代码实例
  • python计数排序和基数排序算法实例
  • python 实现归并排序算法
  • python 实现堆排序算法代码
  • python中合并两个文本文件并按照姓名首字母排序的例子
  • python算法学习之基数排序实例
  • python算法学习之计数排序实例
  • Python中字典(dict)和列表(list)的排序方法实例
  • python基础教程之python消息摘要算法使用示例
  • python k-近邻算法实例分享
  • Python算法之栈(stack)的实现
  • python实现k均值算法示例(k均值聚类算法)
  • 使用python实现递归版汉诺塔示例(汉诺塔递归算法)
  • python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
  • python实现simhash算法实例
  • 爬山算法简介和Python实现实例
  • python实现的二叉树算法和kmp算法实例
  • Python实现的几个常用排序算法实例
  • python使用rsa加密算法模块模拟新浪微博登录
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • python实现绘制树枝简单示例
  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • Python3实现生成随机密码的方法
  • Python3通过request.urlopen实现Web网页图片下载
  • python调用短信猫控件实现发短信功能实例
  • 在Python3中使用urllib实现http的get和post提交数据操作
  • Python实现多行注释的另类方法
  • juqery的python实现:pyquery学习使用教程
  • python 布尔操作实现代码
  • 数据结构:图(有向图,无向图),在Python中的表示和实现代码示例
  • python实现的重启关机程序实例
  • Python中无限元素列表的实现方法
  • python使用循环实现批量创建文件夹示例
  • python 实现文件的递归拷贝实现代码
  • python判断端口是否打开的实现代码
  • python实现哈希表
  • python实现倒计时的示例
  • python实现图片批量剪切示例
  • python实现进程间通信简单实例
  • 使用python实现strcmp函数功能示例
  • Python不使用print而直接输出二进制字符串
  • 让python同时兼容python2和python3的8个技巧分享
  • Python中实现json字符串和dict类型的互转
  • 使用setup.py安装python包和卸载python包的方法
  • python异常信息堆栈输出到日志文件
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • Python开发者社区整站源码 Pythoner
  • Python namedtuple对象json序列化/反序列化及对象恢复
  • python读取csv文件示例(python操作csv)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    让python同时兼容python2和python3的8个技巧分享 iis7站长之家