我正在嘗試解決一個問題。在一些程式中,我必須在各種函式呼叫(遞回呼叫)中回傳一個變數值。我不知道該怎么做。
我在 python 中嘗試合并排序演算法這是實作:
def merge(arr,lo,hi):
mid=(lo hi)//2
c=0
i=lo; j=mid 1; k=0;
temp=[]
while(i<=mid and j<=hi):
if arr[i]>arr[j]:
temp.append(arr[j])
c =mid-i 1
j =1
k =1
else:
temp.append(arr[i])
i =1
k =1
while(i<=mid):
temp.append(arr[i])
i =1
k =1
while(j<=hi):
temp.append(arr[j])
j =1
k =1
for i in range(k):
arr[lo i]=temp[i]
return c
def mergeSort(arr,lo,hi):
if lo==hi:
return
mid=(lo hi)//2
mergeSort(arr,lo,mid)
mergeSort(arr,mid 1,hi)
merge(arr,lo,hi)
除了合并排序之外,我還在計算小于特定元素的元素數量(不太重要)。為此,我使用了一個計數變數“c”。
現在我必須通過所有遞回呼叫回傳 C 值并回傳到我的主函式。我不知道該怎么做。有人幫我退貨。
我也試過這樣回傳: return mergeSort(arr,lo,mid)
但它只回傳 0。我的主要函式呼叫 mergeSort(arr,0,n-1) 在此先感謝。
uj5u.com熱心網友回復:
您需要做的就是將每個遞回呼叫和 by 回傳的值相加merge,然后回傳該值。
def mergeSort(arr,lo,hi):
if lo==hi:
return 0
c = 0
mid=(lo hi)//2
c = mergeSort(arr,lo,mid)
c = mergeSort(arr,mid 1,hi)
c = merge(arr,lo,hi)
return c
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/537819.html
標籤:Python递归合并排序
上一篇:以下遞回函式的時間復雜度是多少
下一篇:如何將TreeData制作成陣列
