吾八哥博客

您现在的位置是:首页 > 码农手记 > Python > 正文

Python

Python里实现快速排序的方法

吾八哥2018-02-02Python929

快速排序由C. A. R. Hoare在1962年提出,它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

具体实现步骤如下:

1、先从数列中取出一个数作为基准数

2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边

3、再对左右区间重复第二步,直到各区间只有一个数

Python里代码实现:

# Autor: 5bug
# WebSite: http://www.5bug.wang

#快速排序
def partition(data, left, right):
    pivot = data[left]
    while left < right:
        while left < right and data[right] >= pivot:
            right -= 1
        data[left] = data[right]
        while left < right and data[left] <= pivot:
            left += 1
        data[right] = data[left]
    data[left] = pivot
    return left

def quick_sort(data, left, right):
    if left < right:
        mid = partition(data, left, right)
        quick_sort(data, left, mid - 1)
        quick_sort(data, mid + 1, right)
    return data


if __name__ == "__main__":
    data = [1, 6, 2, 3, 9, 1, 5, 4, 0]
    print(quick_sort(data, 0, len(data) - 1))

注:快速排序算法是一个不稳定排序算法,但是是一个排序效率极高的算法,时间复杂度也为O(nlogn)。

如果想深入了解具体的排序过程,可参考如下文章:https://www.cnblogs.com/chengxiao/p/6262208.html