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

用Python函数实现快速排序算法的步骤和方法

发布时间:2023-06-22 03:13:43

快速排序算法是一种高效的排序算法,也是面试中常考的算法,本文将介绍用Python函数实现快速排序算法的步骤和方法。

快速排序的思想是通过递归将待排序的数组分为两个子数组,其中一个子数组的所有元素都比另一个子数组的所有元素小,然后对两个子数组进行递归排序,最终将整个数组排序。

快速排序的步骤:

1.从数组中选择一个元素作为基准点(pivot),通常是 个元素。

2.将数组按照基准点分为两个子数组,小于基准点的放在左边,大于基准点的放在右边。

3.对左右两个子数组进行递归排序,重复以上步骤。

Python实现快速排序算法:

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[0]
        left = [x for x in arr[1:] if x < pivot]
        right = [x for x in arr[1:] if x >= pivot]
        return quick_sort(left) + [pivot] + quick_sort(right)

在这个Python函数中,如果数组的长度小于等于1,说明已经排好序了,直接返回。否则,选择数组的 个元素作为基准点pivot,将数组分成大于等于基准点和小于基准点两个子数组。再递归对两个子数组进行快速排序,最终将排好序的子数组合并起来返回。

下面是对上述代码的解释:

    if len(arr) <= 1:
        return arr

如果数组的长度小于等于1,那么这个数组已经排好序了,直接返回该数组。

    else:
        pivot = arr[0]

否则,选择数组的 个元素作为基准点pivot。

        left = [x for x in arr[1:] if x < pivot]
        right = [x for x in arr[1:] if x >= pivot]

将数组按照基准点分成两个子数组,小于基准点的放在左边left,大于等于基准点的放在右边right。

        return quick_sort(left) + [pivot] + quick_sort(right)

对左右两个子数组进行递归排序,并将排好序的子数组合并起来。最终将排好序的数组返回。

快速排序的时间复杂度为O(nlogn),平均性能比冒泡排序、插入排序和选择排序等算法要更快,是一种高效的排序算法。