📜  Python中的快速排序Quicksort(1)

📅  最后修改于: 2023-12-03 14:46:40.643000             🧑  作者: Mango

Python中的快速排序Quicksort

快速排序(Quicksort)是一种流行的排序算法,它是一种分治算法,首先选择一个pivot元素,然后将其他元素分为两部分,一部分比pivot小,一部分比pivot大。然后对这两个部分递归地执行快速排序,直到整个序列排序完成。

算法实现

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

def quicksort(arr):
    if len(arr) < 2:
        return arr
    else:
        pivot = arr[0]  # 选择第一个元素作为pivot 
        less = [i for i in arr[1:] if i <= pivot]  # 将小于等于pivot的元素放入less数组中
        greater = [i for i in arr[1:] if i > pivot]  # 将大于pivot的元素放入greater数组中
        return quicksort(less) + [pivot] + quicksort(greater)  # 递归地对less和greater排序并将结果与pivot合并

在这个实现中,我们首先检查列表的长度是否小于2,如果是,就返回该列表。否则,我们选择第一个元素作为pivot,将剩余元素分为两部分:小于等于pivot的放入一个新的数组less中,大于pivot的放入另一个新的数组greater中。然后对less和greater分别递归执行快速排序,最后将排序后的less与pivot和排序后的greater合并起来。

算法分析

快速排序的最坏时间复杂度是O(n^2),发生在每次选择的pivot都是序列中最小或最大的元素的情况下。平均情况下,快速排序的时间复杂度为O(nlogn),空间复杂度为O(logn)。

快速排序的优点在于实现简单,具有较好的性能,缺点在于对于含有大量重复元素的数组,快速排序的性能会降低,而且需要额外的空间复杂度。在实际应用中,由于很多情况下数组都是随机分布的,因此快速排序仍然是常用的排序算法之一。

参考资料

[1] Introduction to Algorithms, third edition. (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 2009).

[2] QuickSort Algorithm - GeeksforGeeks. (https://www.geeksforgeeks.org/quick-sort/)

结束