# 快速排序算法 一 常规套路
def qsort(lst, start, end):
i = start
j = end
p = lst[start]
while i < j:
while i < j and lst[j] > p:
j -= 1
while i < j and lst[i] < p:
i += 1
if i < j and lst[i] == lst[j]:
i += 1
else:
lst[i], lst[j] = lst[j], lst[i]
if i-1 > start:
lst = qsort(lst, start, i-1)
if j+1 < end:
lst = qsort(lst, j+1, end)
return lst
# 快速排序算法 二 分而治之
def quick_sort(lst):
if len(lst)>=2:
mid = lst[0] # lst[len(lst)//2]
left, right = [], []
lst.remove(mid)
for i in lst:
if i >= mid:
right.append(i)
else:
left.append(i)
return quick_sort(left) + [mid] + quick_sort(right)
else:
return lst
# 一句话搞定
quick_sort = lambda array: array if len(array) <= 1 else quick_sort([item for item in array[1:] if item <= array[0]]) + [array[0]] + quick_sort([item for item in array[1:] if item > array[0]])
if __name__ == '__main__':
qlist = [54, 26, 54, 93, 17, 77, 54, 31, 44, 54, 55, 20]
a = quick_sort(qlist)
print(a)
快速排序 - python3实现
最新推荐文章于 2024-07-15 15:37:59 发布