Я работаю над сортировкой слиянием в Python.
Я проверил merge
функцию. Массивы отлично сливаются.
Но в функции mergeSort
появляется ошибка: ---
RuntimeError: превышена максимальная глубина рекурсии.
RuntimeError Traceback (самый последний вызов
последний) в ()
63 print (обр. [I]),
64
---> 65 mergeSort (обр, 0, n-1)
66 отпечаток ("")
67 print ("Sorted Array is")
в mergeSort (arr, l, r)
53 м = л + (р-1) / 2
54 mergeSort (обр, л, м)
---> 55 mergeSort (обр, м + 1, г)
56 слияния (обр, л, м, р)
57
Что может быть возможной причиной этого?
def merge(arr,l,m,r):
n1 = m-l+1
n2 = r-m
L = [0] * n1
R = [0] * n2
print("First List")
for i in range(0,n1):
L[i] = arr[i+l]
print(L[i]),
print("")
print("Second List")
for j in range(0,n2):
R[j] = arr[j+m+1]
print(R[j]),
#Merging the temp arrays
i = 0
j = 0
k = 0
print("")
print("Merged List ---------->")
while i < n1 and j < n2:
if L[i] <= R[j]:
arr[k] = L[i]
print(arr[k]),
i+=1
else:
arr[k] = R[j]
print(arr[k]),
j+=1
k+=1
while i<n1:
arr[k] = L[i]
i+=1
k+=1
while j<n2:
arr[k] = R[j]
print(arr[k])
j+=1
k+=1
def mergeSort(arr,l,r):
if l<r:
m = l+(r-1)/2
mergeSort(arr,l,m)
mergeSort(arr,m+1,r)
merge(arr,l,m,r)
arr = [0,12,13,0,1,22]
n = len(arr)
mergeSort(arr,0,n-1)
print(" ")
print("Sorted Array is")
for i in range(0,n-1):
print(arr[i])