快速排序

喜你入骨 提交于 2020-02-08 00:06:14

快速排序

算法步骤

  • 找一个基准值,将这个基准值放在正确的位置上,也就是左边的都比它小,右边都比它大,至于左右两边的顺序先不管。
  • 此时数列已经被分为了两个部分,再在左右两边重复第一步,直到数列的顺序被排好。

快速排序

动图演示

快速排序

代码实现

def quick_sort(ls,left,right):
    if left>right: #递归停止的条件
        return 
    cur=ls[left]
    low=left
    high=right
    while low<high:
        if ls[high]>=cur:
            high-=1
        else:
            ls[low]=ls[high]
            while low<high and ls[low]<=cur:
                low+=1
            ls[high]=ls[low]            
    ls[low]=cur
    quick_sort(ls,left,low-1)
    quick_sort(ls,low+1,right)

ls=[63,23,23,67,78,45,23,89,10,19,91,68,10,10,23,100,89,98]
quick_sort(ls,0,len(ls)-1)
print(ls)
# [10, 10, 10, 19, 23, 23, 23, 23, 45, 63, 67, 68, 78, 89, 89, 91, 98, 100]

, 67, 68, 78, 89, 89, 91, 98, 100]


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!