注:本文是在学习了acwing的算法基础课后撰写,主要用于记录python版本算法的模板。其中部分参考了acwing众多大佬的题解。
1.快速排序
思想:
用列表中的一个数(pivot)来分割列表,左侧的数都小于pivot,右侧的数都大于pivot。
步骤:
1.确定pivot。左、右、中点、随机都可以,选择不同代码上可能有细微区别。这里选择中点。
2.调整pivot左侧和右侧的数,使左侧的数都小于pivot,右侧的数都大于pivot。利用双指针。
3.递归处理左、右两段。
模板:
def quick_sort(nums, start, end):
if start >= end:
return
left = start
right = end
# 1.确定pivot。这里选择中点。
mid = (left + right) // 2
pivot = nums[mid]
# 2.调整pivot左侧和右侧的数,使左侧的数都小于pivot,右侧的数都大于pivot。利用双指针。
while left <= right: