用python实现快速排序

#!/usr/bin/python
from sortCommon import swap
#分区函数
def partition(dataArray, left, right):
	#把最后一个元素作为基准
	pivot = right
	#小于基准的子数组的最后一个元素的下标
	tail = left - 1
	for i in range(left, right):
		#把小于等于基准的元素放到前一子数组的末尾
		if dataArray[i] <= dataArray[pivot]:
			tail+=1
			swap(dataArray, tail, i)
	#把基准元素放到前一个子数组的最后边,这样就保证了剩下的子数组就是大于基准的子数组
	swap(dataArray, tail+1, right)
	#返回基准的索引
	return tail+1
#快排函数
def quickSort(dataArray, left, right):
	if left>=right:
		return
	pivotIndex = partition(dataArray, left, right)
	#递归调用
	quickSort(dataArray, left, pivotIndex-1)
	quickSort(dataArray, pivotIndex+1, right)
def sort(dataArray):
	quickSort(dataArray, 0, len(dataArray)-1)

这边是使用递归实现快排算法,由于递归比较简洁,但递归有一个比较严重的问题就是,若是数据量大会致使调用栈很是深,在java中最直接的后果就是栈 内存溢出,python不知道会有什么后果,由于刚用python不久,有时间再试一下,而且尝试把这个算法改为迭代的实现html

参考连接:java

http://www.javashuo.com/article/p-wfvodyqs-ep.htmlpython

相关文章
相关标签/搜索