算法编程玩转大数据程序开发

快速排序(Python)

2017-11-24  本文已影响21人  Zentopia

Python 3 实现:

def quick_sort(left, right, nums):

    if left >= right:
        return

    # 选择最左边的元素为基准数
    pivot = nums[left]
    move_left = left
    move_right = right

    while move_left < move_right:

        # 当基准数在左端时,要先移动 move_right,因为 move_right 找到的数是可以直接和 pivot 交换的
        while nums[move_right] < pivot and move_left < move_right:
            move_right -= 1

        while nums[move_left] >= pivot and move_left < move_right:
            move_left += 1

        if move_left < move_right:
            temp = nums[move_left]
            nums[move_left] = nums[move_right]
            nums[move_right] = temp

    nums[left] = nums[move_left]
    nums[move_left] = pivot

    quick_sort(left, move_left - 1, nums)
    quick_sort(move_left + 1, right, nums)


if __name__ == '__main__':
    nums = [4, 0, 1, 2, 3, 5, 6, 7, 8, 9]
    quick_sort(0, len(nums) - 1, nums)
    print(nums)
上一篇下一篇

猜你喜欢

热点阅读