【发布时间】:2020-04-18 17:05:20
【问题描述】:
我一直在研究下面的快速排序算法,一直无法理解为什么需要在括号中返回 [pivot] 以及为什么需要返回它。函数的输出不是只需要通过现有函数运行新数组(更少和更大),然后像第一次调用它一样获取枢轴值吗?
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr.pop()
greater = []
less = []
for i in arr:
if i > pivot:
greater.append(i)
else:
less.append(i)
return quick_sort(less) + [pivot] + quick_sort(greater)
arr1 = [7,8,9,6,5,4,7,8,9]
quick_sort(arr1)
【问题讨论】:
-
因为您要将列表合并为一个
-
@Sayse 但为什么首先需要返回枢轴值?
-
我不确定你在问什么,你需要它,否则每次调用函数时你都会从列表中丢失一个元素
-
pop() 从列表中删除一个元素,所以你必须明确地将它放回返回的列表中,否则每次递归都会丢失一个元素。
标签: python algorithm quicksort