一、快速排序思路
快速排序特点:快
步骤:
- 取一个元素p(第一个元素),使元素p归为;
- 列表被p分成两部分,左边都比p小,右边都比p大;
- 递归完成排序。
因此我们可以得到快速排序的大致框架:
def partition(data,left,right):
pass
def quick_sort(data,left,right):
if left < right: #证明列表中最少有两个元素
mid = partition(data,left,right) # 进行归位
quick_sort(data,left,mid-1) #递归,对左边的元素进行快排
quick_sort(data,mid+1,right) #递归,对右边的元素进行快排
此时我们需要自己写出partition(归位函数),对元素进行归位。
二、归位函数
思路:例如下面这个数组:
具体思路流程:
- 我们需要对5进行归位,需要将5取出来,此时左边5的位置有空位,(其中左右两个箭头分别对应left和right) <