快速排序,比较常用,撸了一下代码,加深印象。
时间复杂度为O(logn),
最坏的情况下是O(n^2),序列基本有序的情况下
def quick_sort(l, r):
if l >= r:
return
i, j = l, r
key = nums[i]
while i < j:
while i < j and nums[j] >= key:
j = j - 1
nums[i] = nums[j]
while i < j and nums[i] <= key:
i = i + 1
nums[j] = nums[i]
nums[i] = key
quick_sort(l, i - 1)
quick_sort(i + 1, r)
nums = [3, 30, 34, 5, 9]
quick_sort(0, len(nums) - 1)
print(nums)
结果展示
[3, 5, 9, 30, 34]
步骤:
挑元素、划分组、分组重复前两步



