数据结构与算法_排序_快速排序
选择一个基准元素,将小于基准元素的放在基准元素的左边,将大于基准元素的放在基准元素的右边,此时基准元素的位置确定,将基准元素的两边元素进行重复操作,直至所有元素排序完成
def partition(arr, low, high):
i = low - 1
pivot = arr[high]
for j in range(low, high):
if arr[j] <= pivot:
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 low < high:
pi = partition(arr, low, high)
quick_sort(arr, low, pi-1)
quick_sort(arr, pi+1, high)
return arr
quick_sort([5, 2, 3, 1, 4], 0, 4)
时间复杂度:
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)
空间复杂度:
O
(
n
)
O(n)
O(n)
自适应排序
原地排序
非稳定排序