python之使用列表推导式实现快速排序算法
Code:
# 实现快速排序算法
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
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)
# 示例数组
example_array = [3, 6, 8, 10, 1, 2, 1]
# 使用快速排序算法对数组进行排序
sorted_array = quick_sort(example_array)
# 打印排序后的数组
print('排序后的数组:', sorted_array)
列表推导式
列表推导式的基本语法是:
[表达式 for 变量 in 可迭代对象 if 条件]
组成部分
- 表达式:这是你希望添加到新列表中的元素。
- for 变量 in 可迭代对象:这是一个 for 循环,遍历 可迭代对象 中的每个元素,并将当前元素赋值给 变量。
- if 条件:这是一个可选的条件语句,用于过滤哪些元素会被包含在新列表中。只有满足条件的元素才会被添加到新列表中。
[x for x in arr if x < pivot]
- x:这是表达式,表示我们要添加到新列表中的元素。
- for x in arr:这是一个 for 循环,遍历 arr 中的每个元素,并将当前元素赋值给 x。
- if x < pivot:这是一个条件语句,只有当 x 小于 pivot 时,x 才会被添加到新列表中。
解释步骤
- 遍历数组:for x in arr 遍历数组 arr 中的每个元素。
- 条件过滤:if x < pivot 检查当前元素 x 是否小于基准值 pivot。
- 添加元素:如果条件满足(即 x < pivot),则将 x 添加到新列表中。
算法解释:
重宏观上分析,这个算法相当于二分查找,先找到数组中的最中间的数,然后用剩余的数和中间的数做对比,小于中间数的都在左边,大于中间数的都在右边。
从微观中看递归,也是符合宏观的思维。故最终递归出来的结果是从宏观意义上满足,从微观意义上也满足,最终实现快速排序。