下面是一段实现快速排序的Python代码。该代码首先检查输入列表的长度是否为1,如果是,就直接返回该列表。然后,选择一个基准元素,将列表分为两个子列表,一个包含比基准元素小的元素,另一个包含比基准元素大的元素。然后,对这两个子列表递归地应用快速排序。
def quicksort(arr):
# 基线条件: 如果列表只有一个元素,返回列表
if len(arr) <= 1:
return arr
# 选择一个基准元素
pivot = arr[len(arr) // 2]
# 将比基准小的元素放在一个列表,比基准大的元素放在另一个列表
less = [x for x in arr if x < pivot]
equal = [x for x in arr if x == pivot]
greater = [x for x in arr if x > pivot]
# 递归地对两个子列表进行快速排序,并将结果合并
return quicksort(less) + equal + quicksort(greater)
# 示例
arr = [3,6,8,10,1,2,1]
print(quicksort(arr))
这段代码的输出结果为:。这是输入列表 的已排序版本。[1, 1, 2, 3, 6, 8, 10]
[3,6,8,10,1,2,1]
注意,快速排序是一种不稳定的排序算法,因为它可能会改变相等元素的相对顺序。然而,它的平均时间复杂度为 O(n log n),这使得它在许多情况下都是高效的。