Python 快速排序实现的算法?
参考答案:
快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。它的基本思想是:通过一趟排序将待排序列分割成独立的两部分,其中一部分的所有元素都比另一部分的所有元素都要小,然后再按此方法对这两部分分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
以下是一个Python实现的快速排序算法:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
print(quicksort([3,6,8,10,1,2,1]))
# 输出: [1, 1, 2, 3, 6, 8, 10]
这个版本的快速排序使用了Python的列表推导式来创建新的列表。在函数开始时,如果输入的列表长度小于或等于1,那么它就已经是有序的,直接返回。否则,选择一个"基准"元素(在这个例子中,我们选择了列表的中间元素),然后将列表分为三部分:小于基准的元素,等于基准的元素,和大于基准的元素。然后,对小于基准和大于基准的部分递归地进行快速排序,最后将排序后的部分和等于基准的部分合并在一起,返回结果。
注意,这个版本的快速排序使用了额外的空间来创建新的列表,因此它的空间复杂度是O(n log n)。如果你希望在原地进行排序,避免额外的空间开销,你可以使用一种叫做"原地快速排序"的变种。