美文网首页我爱编程
快速排序的python实现

快速排序的python实现

作者: lixiaoxin | 来源:发表于2018-05-27 11:43 被阅读0次

    难点分析:

    快排的难点在于partition循环将终止的时候对于l和r位置的判断,对于基准点pivot的选择这里直接选择最后一个元素 std = array[right]
    在l = r - 1时考虑四种情况:
    1.array[l] < std & array[r] >= std
    2.array[l] > std & array[r] >= std
    3.array[l] < std & array[r] <= std
    4.array[l] > std & array [r] <= std
    循环终止时都有:array[l] > std & array[r] < std, 交换array[l]和array[right]的位置

    def partition(array,left,right):
        l = left
        r = right - 1
        std = array[right]
        while l <= r:
            if array[l] > std and array[r] < std:
                array[l],array[r] = array[r],array[l]
                l += 1
                r -= 1
            if array[l] <= std:
                l += 1
            if array[r] >= std:
                r -= 1
        array[l],array[right] = array[right],array[l]
        return l
    
    def quicksort(array,left,right):
        if left < right:
            pivot = partition(array,left,right)
            quicksort(array,left,pivot-1)
            quicksort(array,pivot+1,right)
    
    

    相关文章

      网友评论

        本文标题:快速排序的python实现

        本文链接:https://www.haomeiwen.com/subject/spdbjftx.html