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

实现Python的数组函数:快速排序

发布时间:2023-08-05 00:05:43

快速排序是一种常用的分治算法,常用于对数组进行排序。其基本思想是选择一个基准元素,通过一趟排序将数组分成两部分,其中一部分的元素都比基准元素小,另一部分的元素都比基准元素大。然后再对这两部分分别进行快速排序,递归这个过程,最终实现整个数组的排序。

下面是一个实现快速排序的Python函数。

def quick_sort(arr):
    # 递归边界:数组为空或只有一个元素,直接返回
    if len(arr) <= 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)

使用该函数可以对任意数组进行快速排序。例如:

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

输出结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9]

快速排序的平均时间复杂度为O(n log n),其中n为数组的长度。通过将数组划分为不同的子数组,通过递归的方式分别对子数组进行排序,最终实现整个数组的排序。快速排序是一种高效的排序算法,在实际应用中使用频率很高。