-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);
            }
4

1 回答 1

0

您可以使用返回值来跟踪这一点。这是一个通用示例:

int myRecursiveMethod() {

    ...

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

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


int totalCount = myRecursiveMethod();
于 2012-03-15T02:01:30.240 回答