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

Python中的sorted()函数:如何快速排序一个列表?

发布时间:2023-06-21 19:36:16

Python中的sorted()函数是内置的排序函数,在排序一个列表时十分常用。sorted()的使用非常简单,只需要将需要排序的列表作为参数传入即可。

示例:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = sorted(lst)
print(sorted_lst)

输出结果:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

这里的lst是需要排序的列表,sorted_lst是排序后的列表。结果表明,sorted()会对列表进行从小到大的排序。

但是,如果需要对一个非常大的列表进行排序,sorted()函数就可能会效率较低。这时候,就需要使用快速排序算法。

快速排序算法是一种基于分治思想的排序算法,它的时间复杂度为O(nlogn),是一种效率非常高的排序算法。

快速排序算法的基本思路是:从列表中选取一个数作为基准数,将列表中所有小于基准数的数放在基准数的左边,所有大于基准数的数放在右边。然后对基准数左右两边的列表分别进行同样的操作,直到每个子列表只剩下一个数为止。

下面是Python的快速排序实现:

def quick_sort(lst):
    if len(lst) <= 1:
        return lst
    else:
        pivot = lst[0]  # 选取列表开头的数作为基准数
        left_lst = []  # 存放所有小于基准数的数
        right_lst = []  # 存放所有大于基准数的数
        for i in range(1, len(lst)):
            if lst[i] < pivot:
                left_lst.append(lst[i])  # 放入left_lst
            else:
                right_lst.append(lst[i])  # 放入right_lst
        return quick_sort(left_lst) + [pivot] + quick_sort(right_lst)

在上面的代码中,通过递归计算出左右两边的排序结果,最后将结果合并起来,即可得到完整的排好序的列表。

示例:

lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
sorted_lst = quick_sort(lst)
print(sorted_lst)

输出结果:

[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

可以看到,快速排序后的结果与使用sorted()函数的结果是一致的。

在实际开发中,快速排序算法被广泛应用于各种场景,因为它能够快速地在大规模数据下排序,提高了工作效率。