python快速排序

参考:www.bilibili.com/video/BV1mE…

实现

真没看懂韩老师的,这玩意递归没法测试5w个。www.bilibili.com/video/BV1E4…

import random
import time

tempList = [random.randint(0, 100000) for x in range(200)]


def get_mid(l, left, right):
    # 划分比这个数大和小的列表
    pivot = l[left]
    while left < right:
        while l[right] >= pivot and left < right:
            right -= 1
        l[left] = l[right]
        while l[left] <= pivot and left < right:
            left += 1
        l[right] = l[left]
    l[left] = pivot
    return left


def quickSort(l, left, right):
    # 最后只剩下一个数
    if left < right:
        mid = get_mid(l, left, right)
        quickSort(l, left, mid - 1)
        quickSort(l, mid + 1, len(l) - 1)


print("==============")
start = time.time()
quickSort(tempList, 0, len(tempList) - 1)
end = time.time()
print(end - start)