def mergeSort(arr):
if len(arr) >1:
mid = len(arr)//2 # Finding the mid of the array
L = arr[:mid] # Dividing the array elements
R = arr[mid:] # into 2 halves
mergeSort(L) # Sorting the first half
mergeSort(R) # Sorting the second half
i = j = k = 0
# Copy data to temp arrays L[] and R[]
while i < len(L) and j < len(R):
if L[i] < R[j]:
arr[k] = L[i]
i+= 1
else:
arr[k] = R[j]
j+= 1
k+= 1
# Checking if any element was left
while i < len(L):
arr[k] = L[i]
i+= 1
k+= 1
while j < len(R):
arr[k] = R[j]
j+= 1
k+= 1
return arr
尽管L和R是自变量,但它们的值如何随递归函数中L和R值的变化而变化?有人能详细解释一下吗
在python中,列表是一个可变对象,因此这里L和R是通过引用传递的,甚至不需要末尾的“
return arr
”。这意味着即使通过递归函数调用也会修改列表。 使用调试器,研究合并排序算法拆分每个项目并开始排序的关键时刻,您将更好地了解它的工作原理但是代码的缩进有问题。您需要在函数声明下缩进所有代码,除了
return
行相关问题 更多 >
编程相关推荐