欢迎访问宙启技术站
智能推送

快速排序算法的Python实现 - 实现快速排序算法的Python函数

发布时间:2023-05-22 00:49:00

快速排序算法是一种经典的排序算法,它通过不断地对数组进行划分,使得数组中的元素不断地有序化,直到最终整个数组有序。它的时间复杂度为 $O(nlogn)$,在大部分情况下都优于其他排序算法。

下面是实现快速排序算法的Python函数:

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr)//2]   # 选择一个基准点
    left = [x for x in arr if x < pivot]   # 将比基准点小的放到左边
    middle = [x for x in arr if x == pivot]   # 将等于基准点的放到中间
    right = [x for x in arr if x > pivot]   # 将比基准点大的放到右边
    return quick_sort(left) + middle + quick_sort(right)   # 分治递归,合并结果

接下来逐行解释一下这个函数的实现过程:

1. 如果数组只有一个或零个元素,说明已经有序,直接返回。

2. 从数组中选择一个基准点,这里选择的是中间元素。

3. 将数组分成小于、等于、大于基准点的三个部分。

4. 对前两部分递归执行快速排序算法,将结果和中间部分合并。

这个函数的时间复杂度为 $O(nlogn)$,但是它的空间复杂度为 $O(n)$,不如其他排序算法比较占用内存。在实际使用时,需要根据情况选择是否使用快速排序算法。

在使用时,只需要传入要排序的数组即可:

arr = [5, 3, 8, 4, 2, 7, 1, 3, 6]
sorted_arr = quick_sort(arr)
print(sorted_arr)

输出结果为:

[1, 2, 3, 3, 4, 5, 6, 7, 8]

可以看到,这个函数确实实现了快速排序算法,将数组按照从小到大的顺序排序了。