随机快排的时间复杂度是O(n*logN)
import random
# 时间复杂度O(n*logN)
def swap(arr, i, j):
temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
def partition(arr, L, R):
less = L - 1
more = R
while L < more:
if arr[L] < arr[R]:
less += 1
swap(arr, less, L)
L += 1
elif arr[L] > arr[R]:
more -= 1
swap(arr, more, L)
else:
L += 1
swap(arr, more, R)
return [less + 1, more]
def quickSort(arr, L, R):
if L < R:
swap(arr, L + int(random.random() * (R - L+1)), R) # 随机快排
res_list = partition(arr, L, R)
quickSort(arr, L, res_list[0] - 1)
quickSort(arr, res_list[1] + 1, R)
arr = [random.randint(1, 10) for _ in range(10)]
print(arr)
quickSort(arr, 0, len(arr) - 1)
print(arr)