思路:
例如有列表如下 li = [5,7,4,6,3,1,2,9,8]
1、取一个元素p(一般取第一个元素),使元素p归位
2、列表被p分成两部分,左边都比p小,左边都比p大
3、递归完成排序
所以快速排序关键在于怎么让元素p归位?
归位思路:
1、先把5取出赋值赋值给tmp(可把原来5的位置看作一个空位),列表最右边定位right,最左边定位left。
2、先从列表最左边开始,若大于或者等于5,就把right向前移一位,即right - 1;若right小于5,则把right的值赋给当前列表的空位。(只有当赋值后才可执行下一步)
3、再把left的值与p相比,若小于或等于,就把left向后移一位,即left + 1;若left大于5,则把left的值赋给当前列表的空位。(只有当赋值后才可执行下一步)
4、重复2,3步。直到left不在小于right
实现代码:
整体快速排序
实现p归位
到此快速排序完毕