算法
def QuickSort(myList,start,end):
if start < end:
i,j = start,end
base = myList[i]
while i < j:
while (i < j) and (myList[j] >= base):
j = j - 1
myList[i] = myList[j]
while (i < j) and (myList[i] <= base):
i = i + 1
myList[j] = myList[i]
myList[i] = base
QuickSort(myList, start, i - 1)
QuickSort(myList, j + 1, end)
return myList
myList = [49,38,65,97,76,13,27,49]
print("Quick Sort: ")
QuickSort(myList,0,len(myList)-1)
print(myList)
运算结果
算法步骤
在待排序的数据任取一个作为支点,经过一趟排序,把所有小于支点的数放到前面,大于的·放在后面,然后对小于部分和大于部分重复上述过程
时间复杂度
最好情况:每一趟均匀分割成两个长度大致相同的子表
最坏情况:每次划分只得到比上一次少一个记录的子序列
时间复杂度为O(nlog2n)