快速排序(Quick Sort) 是一种常用的高效排序算法,采用了分治法的思想。它的核心思路是通过选择一个“基准”元素,将数组分成两部分,一部分比基准小,另一部分比基准大,然后递归地对这两部分进行排序。
快速排序的基本思想
- 选择基准(Pivot):从数组中选择一个元素作为基准。
- 分区(Partition):将数组分成两部分,使得基准左边的所有元素都比基准小,右边的所有元素都比基准大。
- 递归排序:递归地对基准左边和右边的子数组进行快速排序。
快速排序的关键步骤
- 分区操作:通过分区操作将数组划分为两个部分,一部分比基准小,另一部分比基准大。
- 递归处理:对分区后的子数组递归进行快速排序,直到每个子数组的长度为 1 或 0。
def quick_sort(arr):
# 停止条件/基线条件
#如果数组长度小于等于 1,直接返回
if len(arr) <= 1:
return arr
# 选择基准元素
pivot = arr[len(arr) // 2]
# 分区操作:使用循环进行分区
left = [] # 小于基准的元素
middle = [] # 等于基准的元素
right = [] # 大于基准的元素
for x in arr:
if x < pivot:
left.append(x)
elif x == pivot:
middle.append(x)
else:
right.append(x)
# 递归排序并合并结果
return quick_sort(left) + middle + quick_sort(right)
# 测试代码
arr = [10, 7, 8, 9, 1, 5]
sorted_arr = quick_sort(arr)
print("排序后的数组:", sorted_arr)