|
|
快速排序算法介绍
快速排序是一种高效的排序算法,基于“分治”思想。它的平均时间复杂度为 O(n log n),在最坏情况下为 O(n^2),但通过优化可以避免最坏情况。
基本步骤:
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)
- # 测试
- arr = [3, 6, 8, 10, 1, 2, 1]
- sorted_arr = quick_sort(arr)
- print(sorted_arr)
复制代码
关键特点:
- 原地排序:可以通过原地分区实现,节省空间。
- 不稳定排序:相等元素的相对位置可能改变。
- 优化技巧:如随机选择基准或使用三数取中法来避免最坏情况。
简单解释分区过程:
假设数组 [3, 6, 1, 2, 8],选择基准为 3。分区后,小于 3 的元素在左,大于 3 的在右,例如 [1, 2, 3, 6, 8]。然后递归处理左右部分。
希望这个介绍帮助你理解快速排序!如果有更多问题,随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|