2012-03-15 33 views
-1

我的問題是,我有兩個函數,其中一個函數調用另一個函數,因爲它執行了幾次(rec),我想要保存值進入第二個函數(在我的情況下調用Mergesort)。我實際上是使用Merge Sort對一個列表進行排序,但是我很想知道反轉的數量,所以我想返回一個int,但是我不知道如何存儲這個值,所以我可以將所有的值加在一起最後得到反轉的數量(是的,我知道存在一個O(n^2)算法來找到它)。我想大多數人都知道MergeSort算法,所以我不會把它寫出來,但是從下面的代碼你可能會知道我在找什麼。如果它不幫助,然後嘗試從我:)如何通過另一個函數多次運行函數時存儲某個值

public ArrayList MergeMerge(ArrayList A, int e, int a){ 
    s=...; 
    MergeMerge(A,e,a); 
    MergeMerge(A,e-1,a); 
    MergeSort(A,e,r,s); 

public ArrayList Mergesort (ArrayList A, int e, int a, int s) { 
    ... 
    int inversions=0; 
    for (....) 
     .... 
     else { 
      ... 
      inversions=inversions+(s-i); 
      } 
+1

沒有空間限制;隨意使用「你」而不是「你」... – 2012-03-15 02:02:24

+0

nvm,我想通了。我在數組A的末尾添加了一個額外的值,每次運行我的Mergesort函數時,它都會增加保存在數組中的值。 – John 2012-03-15 13:29:50

回答

0

可以使用返回值來跟蹤這上面解釋回答我的問題。以下是一個通用示例:

int myRecursiveMethod() { 

    ... 

    // Base case 
    if (someCondition) { return 1; } 

    // Otherwise 
    return myRecursiveMethod() + myRecursiveMethod() + 1; 
} 


int totalCount = myRecursiveMethod(); 
+0

即時通訊不知道我明白這:( – John 2012-03-15 02:13:17

相關問題