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

快速排序数组数据的函数实现

发布时间:2023-06-26 14:44:58

快速排序(Quick Sort)是一种基于分治思想的高效排序算法,由C.A.R. Hoare在1960年提出,是非常常用和广泛的排序算法之一。

快速排序的基本思想是:选择一个元素作为基准值(Pivot),将序列分为两部分,使左边部分的所有元素都小于等于基准值,右边部分的所有元素都大于等于基准值,然后对左右两部分分别递归进行排序,直到整个序列都有序。

下面是快速排序数组数据的函数实现:

def quick_sort(arr):
    if len(arr) <= 1:  # 如果序列元素个数小于等于1,则直接返回
        return arr
    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)  # 进行递归排序

在这个实现中,首先检查序列的长度是否小于等于1,如果是,则直接返回。然后选择 个元素作为基准值。

接着,使用 Python 的列表推导式分别找出左边部分和右边部分的元素。其中,左边部分的元素必须小于等于基准值,右边部分的元素必须大于基准值。

最后,递归调用 quick_sort 函数对左右部分进行排序,然后将左、中、右三个部分的元素拼接在一起,返回排序后的结果。

快速排序的时间复杂度为 O(nlogn),其中n为序列的长度,因为每次对序列进行划分都需要O(n)的时间,而序列被划分的次数为 O(logn)。由于快速排序包括递归调用,所以也需要考虑栈操作的开销。空间复杂度最坏情况下为O(n), 情况下为O(logn)。