快速排序因其平均时间复杂度$O(n\log n)$而成为广泛应用的高效排序算法。其核心是分治法:
- 选择基准 (Pivot):从待排序序列中选取一个元素(如第一个元素$arr[0]$)。
- 分区 (Partition):将序列重新排列,所有小于基准的元素置于其前,大于或等于的置于其后。基准元素最终位于正确位置。
- 递归排序:对基准前后的两个子序列递归地应用快速排序。
关键特性:
- 平均高效:在平均情况下性能优异。
- 原地排序:主要操作在原始数组上进行,空间复杂度$O(\log n)$(递归栈)。
- 不稳定性:相等元素的相对位置可能改变。
Python实现示例:
def quick_sort(arr):"""递归实现快速排序"""if len(arr) <= 1: # 基线条件:空或单元素数组已有序return arrpivot = arr[0] # 选择第一个元素作为基准# 创建小于基准的左子数组left = [x for x in arr[1:] if x < pivot]# 创建大于等于基准的右子数组