📜  排序算法-快速排序(1)

📅  最后修改于: 2023-12-03 15:39:50.024000             🧑  作者: Mango

排序算法-快速排序

快速排序是一种常用的排序算法,它使用分治法(Divide and conquer)策略来对一个序列进行排序。

基本思想

快速排序的基本思想是通过将待排序列表分割成独立的两部分,其中一部分的所有元素都比另一部分小,然后再按照同样的方式对这两部分进行递归处理,直到整个序列有序。

实现步骤
  1. 选择一个枢轴元素(pivot),将待排序序列分割成小于等于枢轴元素和大于枢轴元素的两个部分。
  2. 对这两个部分再分别选择一个枢轴元素(可以是原来序列中的任意一个元素),并将这两个新序列分割成小于等于枢轴元素和大于枢轴元素的两个部分。
  3. 重复上述过程,直到所有子序列都只剩下一个元素为止。
代码实现

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

def quick_sort(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 quick_sort(left) + middle + quick_sort(right)

其中,pivot 表示枢轴元素,这里选择的是序列中间的元素。leftmiddleright 分别表示小于、等于和大于枢轴元素的三个部分。最后,将排序好的三个部分合并起来即可。

时间复杂度

快速排序的时间复杂度为 O(n log n)。

空间复杂度

快速排序的空间复杂度为 O(log n),因为该算法采用了递归方式实现。

稳定性

快速排序是一种不稳定的排序算法,因为在分割子序列的过程中,它可能会改变相同元素之间的顺序。

总结

快速排序是一种高效、常用的排序算法,它的时间复杂度为 O(n log n),空间复杂度为 O(log n)。在实际应用中,由于其易于实现、效率高等优点,快速排序经常被用于大规模数据的排序。