最近一直在复习数据结构,把常用的的算法使用python实现,
快速排序号称时间复杂度最低的排序算法,平均复杂度o(nlogn)
思路:1、将第一个元素设为枢轴pivot,将整个数组分为两部分,左边比pivot小,右边比pivot大
2、对左右两部分分别递归
def partition(l,low,high):
pivotkey = l[low]
while low < high:
while low < high and l[high]>=pivotkey:
high = high-1
n = l[high]
l[high] = l[low]
l[low] = n
while low < high and l[low]<pivotkey:
low = low + 1
n = l[high]
l[high] = l[low]
l[low] = n
return low
def q_sort(l, low, high):
if low < high:
pivot = partition(l,low, high)
q_sort(l, low, pivot - 1)
q_sort(l, pivot + 1, high)
return l
l = [50,10,90,30,70,40,80,60,20]
print q_sort(l, 0, len(l)-1)