快速排序的Python代码返回了什么

iszxjhcz  于 2022-12-28  发布在  Python
关注(0)|答案(1)|浏览(133)

我是一个初学者,正在尝试理解第二行中的“return”究竟返回了什么,以及为什么不管我是否在下面第一行的开头添加了return语句,代码都能正常运行:

quickSort(arr, start, pivot_index-1)
        return quickSort (arr, pivot_index+1, end)

以下是实际代码:

def quickSort(arr, start, end):
  
    if start >= end:
        return arr  
    else:
        pivot_index = partition(arr, start, end)
        quickSort(arr, start, pivot_index-1)
        return quickSort (arr, pivot_index+1, end)

def partition(arr, low, high):
    pivot_value = arr[high]
    for i in range(low,high):
        if arr[i] < pivot_value:
            arr[i], arr[low] = arr[low], arr[i]
            low += 1
    arr[low], arr[high] = arr[high], arr[low]
    pivot_position = low
    return pivot_position
#--------------------------------------       
arr = [1,2,9,10,6,15,8,24,3,1,8,13,6,2,7]
print(quickSort(arr,0,len(arr)-1))
pxy2qtax

pxy2qtax1#

这里的quickSort函数使用了递归,所以在您的问题行中,它返回了参数为(arr, pivot_index+1, end)的调用的返回值,因为您需要对数组的两个部分进行排序,即(quickSort(arr, start, pivot_index-1))的左边和pivot的右边(return quickSort (arr, pivot_index+1, end))要得到正确的结果,在quickSort(arr, start, pivot_index-1)行前面加上return语句会导致pivot右边的部分不排序,并得到不正确的输出(甚至代码也没有崩溃)。如果你想了解更多关于quickSort的知识,这里有资源:https://www.geeksforgeeks.org/quick-sort/如果你想了解更多关于递归的知识,你可以参考这个链接:https://www.geeksforgeeks.org/introduction-to-recursion-data-structure-and-algorithm-tutorials/

相关问题