最近,我刷新了有关快速排序算法的知识。我知道列表(Python)是通过引用传递的,因此对其条目所做的任何更改都将反映在函数调用之外。该算法使用递归而不使用return语句。我想知道函数到达其主体末端后会发生什么。 return语句(如果存在)在“弹出”堆栈之前将值传回立即调用者(如果我错了,请更正我)。这一直持续到到达最后一个呼叫者为止。如果没有回叫,那么上述过程会发生吗?
def quick_sort(arr,low,high):
# the Breaking statement
if (low < high):
# Partitoning
div = partition(arr,low,high)
quick_sort(arr,low,div)
quick_sort(arr,div+1,high)
def partition(arr,low,high):
pivot = arr[low]
minIndex = low;
for i in range(low+1,high):
if arr[i] <= pivot:
minIndex += 1
arr[minIndex],arr[i] = arr[i],arr[minIndex]
arr[minIndex],arr[low] = pivot,arr[minIndex];
return minIndex
当python函数到达末尾时,它返回None。
https://www.askpython.com/python/python-return-statement
因此,最后一次调用quick_sort
会返回None,然后上一个调用到达其自己的末尾时将返回None,依此类推,直到第一次调用为止。
但是由于您不使用quick_sort
的返回值(至少在您提供的代码中,所以返回值没有关系。