找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 22|回复: 0

快速排序

[复制链接]
发表于 2025-4-6 00:11:13 | 显示全部楼层 |阅读模式
快速排序(Quick Sort)是一种高效的排序算法,采用分治法(divide and conquer)将数据分为较小的子集,从而实现排序。以下是快速排序的基本思路及其实现步骤:
快速排序的基本思路
  • 选择基准(Pivot)

    • 从数组中选择一个元素作为基准(通常选择第一个元素、最后一个元素或中间元素)。
  • 分区(Partition)

    • 将数组重排,使得基准左边的元素都小于基准,右边的元素都大于基准。基准最终位置即为排序后该元素的位置。
  • 递归排序

    • 递归对基准左边和右边的子数组进行快速排序。
快速排序的实现(Python示例)下面是一个用Python实现的快速排序示例:
  1. def quick_sort(arr):
  2.     if len(arr) <= 1:
  3.         return arr
  4.     else:
  5.         pivot = arr[len(arr) // 2]  # 选择基准
  6.         left = [x for x in arr if x < pivot]  # 小于基准的元素
  7.         middle = [x for x in arr if x == pivot]  # 等于基准的元素
  8.         right = [x for x in arr if x > pivot]  # 大于基准的元素
  9.         return quick_sort(left) + middle + quick_sort(right)  # 递归调用

  10. # 示例用法
  11. arr = [3, 6, 8, 10, 1, 2, 1]
  12. sorted_arr = quick_sort(arr)
  13. print(sorted_arr)  # 输出: [1, 1, 2, 3, 6, 8, 10]
复制代码

时间复杂度
  • 平均情况: O(n log n)
  • 最坏情况: O(n²)(当数组已经是有序的,且总是选择最小或最大元素作为基准时)
  • 最好情况: O(n log n)
空间复杂度
  • O(log n)  — 递归栈的深度,在某些实现中可优化为 O(1)。
优缺点
  • 优点:

    • 平均性能较好,适合大数据量的排序。
    • 适用于外部排序。
  • 缺点:

    • 在最坏情况下性能下降较严重。
    • 递归实现需注意栈溢出问题。
如果你还有其他的问题或需要更详细的解释,随时告诉我!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|星星学习网

GMT+8, 2025-4-22 09:18 , Processed in 0.094127 second(s), 13 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表