快速排序的时间复杂度: O(nlogn)
快速排序: 快
快速排序思路:
取一个元素p (第一个元素), 使元素p归位:列表被p分成两部分,左边都比p小,右边都比p大递归完成排序刚开始把5的元素存起来
找比5的大的数放到这个空位上 7比5大就放到上图的空位了
这样一次类推
def partition(li,left,right): #刚开始初始把元素存在来,不能写零 tmp = li[left] #初始化5 while left < right: #可能left=right 所以有left<right的判断 要不碰头要不就是找到了li[right] >=tmp: while left < right and li[right] >=tmp: #从右边找比tmp(5)小的数 #这个就是指针 right -=1 #往左走一步 #小于tmp就换位置,值放到空位上 li[left] = li[right] #把右边的值写到左边空位上 print(li,'right') while left < right and li[left] <=tmp: #指针 left +=1 #大于tmp就换位置,把左边的值写到右边空位上 li[right] = li[left] #把左边的值写到右边空位上 print(li,'left') li[left] = tmp #把tmp归为 li = [5,7,4,6,3,1,2,9,8] print(li) partition(li,0,len(li)-1) print(li)