#!/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