快速排序
平均时间复杂度: nlogn
最为常用的排序算法
def quick_sort(data, start, end): # 快排原地排序,直接对原list排序,没有返回值 if start>=end: return # 开始结束索引不能破坏 left, right = start, end mid = start + (end-start)//2 # 避免最坏情况出现 pivot = data[mid] while left <= right: while left <= right and data[left]<pivot: left += 1 while left <= right and data[right]>pivot: right -= 1 # 两头找到均不满足条件的数,需要互换区间 if left <= right: data[left], data[right] = data[right], data[left] left += 1 right -= 1 # 小范围内再排序 quick_sort(data, start, right) quick_sort(data, left, end) nums = [33,2,11,8,7,12] quick_sort(nums, 0, len(nums)-1) nums