python 算法 排序实现快速排序

时间:2022-09-04 03:20:17 

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,快速排序
0
投稿

猜你喜欢

  • 使用pyshp包进行shapefile文件修改的例子

    2023-07-01 08:28:35
  • Python sklearn CountVectorizer使用详解

    2023-06-20 08:19:05
  • Python连接Redis的基本配置方法

    2023-09-29 21:28:27
  • SqlServer 索引自动优化工具

    2012-10-07 10:41:09
  • delete from online where datediff

    2009-06-07 18:46:00
  • 浅谈用户注册表单

    2008-11-13 12:27:00
  • 详解new function(){}和function(){}()

    2008-02-28 12:28:00
  • 交互设计杂七杂八

    2010-09-25 18:41:00
  • PHP设计模式 注册表模式(多个类的注册)

    2023-11-20 06:45:13
  • python复制文件的方法实例详解

    2021-12-22 11:43:45
  • PHP利用func_get_args和func_num_args函数实现函数重载实例

    2023-06-15 09:25:51
  • Python利用Beautiful Soup模块搜索内容详解

    2023-10-24 15:53:43
  • 对python同一个文件夹里面不同.py文件的交叉引用方法详解

    2023-12-24 00:54:27
  • IE下修改<p>标签的innerHTML出错

    2007-11-11 10:12:00
  • Python判断字符串是否为合法标示符操作

    2023-09-28 18:49:01
  • Python关于__name__属性的含义和作用详解

    2021-10-28 09:29:51
  • Python实现计算文件夹下.h和.cpp文件的总行数

    2022-09-20 00:54:51
  • 如何使用Django Admin管理后台导入CSV

    2022-12-28 19:56:52
  • 国内外字体网站(font)的整理

    2007-10-14 09:58:00
  • 用js实现放大镜效果

    2023-09-19 18:29:29
  • asp之家 网络编程 m.aspxhome.com