def quick_sort(arr):
if not arr or len(arr) == 1:
return arr
k, new_arr = partition(arr)
return quick_sort(new_arr[:k]) + [new_arr[k]] + quick_sort(new_arr[k + 1 :])
# 保证子序列一定严格小于原序列
def partition(arr):
tmp = arr[-1]
i, j = 0, 0
while j < len(arr):
if arr[j] <= tmp:
arr[j], arr[i] = arr[i], arr[j] # 交换
i += 1
j += 1
return i - 1, arr # 保证分界点 i - 1 上的值一定是 tmp
arr1 = []
arr2 = [2]
arr3 = [2, 1]
arr4 = [10, 9, 8, 11, 8, 1, 104, 7, 8, 3, 1]
for arr in [arr1, arr2, arr3, arr4]:
sorted_arr = quick_sort(arr)
print(sorted_arr)
写个快速排序吧~
最新推荐文章于 2022-12-17 10:06:15 发布