快速排序的可视化之美
快速排序是我最喜欢的算法之一。第一次看到它的动画演示时,我被分治思想的优雅深深震撼。
def quicksort(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 quicksort(left) + middle + quicksort(right)
心得:实现之后才真正理解了递归的力量——把大问题不断拆小,直到简单到不值一提。这种思维方式不只适用于算法,生活中的复杂问题也一样。