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

如何在Python中快速排序列表的函数实现

发布时间:2023-07-04 11:47:28

快速排序是一种高效的排序算法,其原理是通过在未排序的列表中选择一个基准元素,将列表分割成较小和较大的两个子列表,然后对这两个子列表进行递归排序。最后将左子列表、基准元素和右子列表拼接起来,即可得到有序的列表。

下面是在Python中实现快速排序的函数:

def quick_sort(lst):
    if len(lst) <= 1:
        return lst
    else:
        pivot = lst[0]                    # 将列表的第一个元素作为基准元素
        smaller = [x for x in lst[1:] if x <= pivot]    # 小于等于基准元素的元素放在 smaller 列表中
        greater = [x for x in lst[1:] if x > pivot]     # 大于基准元素的元素放在 greater 列表中
        return quick_sort(smaller) + [pivot] + quick_sort(greater)   # 递归调用快速排序,并拼接左子列表、基准元素和右子列表

# 测试
lst = [5, 3, 8, 4, 2, 9, 1, 7, 6]
sorted_lst = quick_sort(lst)
print(sorted_lst)

这段代码首先检查列表的长度,如果长度小于等于1,则直接返回列表。否则,选取列表的第一个元素作为基准元素,然后通过列表推导式将小于等于基准元素的元素放在 smaller 列表中,大于基准元素的元素放在 greater 列表中。然后递归调用快速排序函数对 smaller 和 greater 列表进行排序,并将左子列表、基准元素和右子列表拼接起来,最后返回有序的列表。

对于上述代码的时间复杂度分析,最好情况下是O(n log n),即当列表平均分割成两个长度相等的子列表时。最坏情况下是O(n^2),即当列表已经有序时。平均情况下,快速排序的时间复杂度为O(n log n)。