用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

相關文章
相關標籤/搜索