2012-03-15 7 views
-1

私の問題は2つの関数があり、関数の1つがもう1つ呼び出すことです。私の場合は2番目の関数(called Mergesort)に値のイムが入ります。私は実際にはマージソートを使ってリストをソートしていますが、逆位の量を知りたいので、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

スペースの制限はありません。 "あなた"よりむしろ "あなた"を自由に使用してください... –

+0

nvm、私はそれを考え出した。私は配列Aの最後に余分な値を追加し、私はMergesort関数を実行するたびに配列に保存された値をインクリメントします。 – John

答えて

0

これを追跡するために戻り値を使うことができます。一般的な例を次に示します。

int myRecursiveMethod() { 

    ... 

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

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


int totalCount = myRecursiveMethod(); 
+0

私はこれを理解しているかわからない:( – John

関連する問題