快速排序是对冒泡排序的改进
def quick_sort(lists):
quick_sort_rec(lists, 0, len(lists) - 1)
def quick_sort_rec(lists, start, end):
if start >= end:
return lists
mid = lists[start]
low = start
high = end
while low < high:
while low < high and lists[high] >= mid:
high -= 1
if low < high:
lists[low] = lists[high]
low += 1
while low < high and lists[low] <= mid:
low += 1
if low < high:
lists[high] = lists[low]
high -= 1
lists[high] = mid
quick_sort_rec(lists, start, low - 1)
quick_sort_rec(lists, low + 1, end)
测试速度:
from random import shuffle
import time
N = 100000
# N = 100
li = list(range(N))
shuffle(li)
li1 = li.copy()
t1 = time.time()
quick_sort(li1)
# print(li1)
t2 = time.time()
print("快速排序消耗时间:", t2 - t1)
结果:
快速排序消耗时间: 0.512702465057373
可见相比于希尔排序速度又有了很大的提高