首页 > 技术文章 > 快速排序的代码及原理

youhongliang 2020-07-20 13:26 原文

一、快速排序的原理

  主要是通过递归来实现快速排序。写子函数,将数据(列表)的最左侧位置的元素作为基数,将小于基数的元素放到左边,大于基数的元素放到右边,此时将基数的下标return回来。此时得到mid,左边一部分数据和右边一部分数据。通过递归实现子函数调用,将mid-1作为左边这部分的右边界,将mid+1作为右这部分的左边界。

二、快速排序的代码

# 快排   重要字眼:基数、下标、边界


def _quick_sort(li, left, right):
    tmp = li[left]
    while left < right:
        while left < right and li[right] > tmp:
            right -= 1
        li[left] = li[right]
        while left < right and li[left] < tmp:
            left += 1
        li[right] = li[left]
    li[left] = tmp
    return left


def quick_sort(data, left, right):
    if left < right:
        mid = _quick_sort(data, left, right)  # mid作为边界  左边的一部分,右边的一部分。
        quick_sort(data, left, mid-1)
        quick_sort(data, mid+1, right)


dic = [5, 7, 1, 2, 3, 4, 8, 9, 6]
quick_sort(data=dic, left=0, right=len(dic) - 1)
print(dic)

 

推荐阅读