1.选取基准元素,这里取数组的最右边为基准元素,确定数组在基准元素中的最终位置并返回。
2.对整个数组进行递归划分子数组并寻找基准元素位置
时间复杂度: O(nlogn)
空间复杂度:O(logn)
#首先确定数组中的基准元素,并返回其在数组中的最终位置
def find_k(arr, low, high):
i = low - 1
base_ele = arr[high]
#去除最后一个元素的遍历
for j in range(low, high):
if arr[j] < base_ele:
#将大于基准元素的放在基准元素的后面,小于基准元素的放在基准元素的前面
i += 1
arr[i], arr[j] = arr[j], arr[i]
#将基准元素放在最终位置
arr[i+1], arr[high] = arr[high], arr[i+1]
return i + 1
def quick_sort(arr, low, high):
# 递归条件
if high > low:
k = find_k(arr, low, high)
quick_sort(arr, low, k-1)
quick_sort(arr, k+1, high)
arr = [32, 12, 45, 9, 13, 2, 100, 56, 11]
quick_sort(arr, 0, len(arr)-1)
print(arr)