jvm 如果封装递归函数的参数,是否可以达到性能?

yruzcnhs  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(105)

我有一个函数,它使用合并排序算法对给定的数组进行排序。该算法调用自己来解决问题。

public class MergeSort {
    
    public static void mergeSort(int[][] arr, int left, int right) {
        // merge two parts
        merge(arr, left, mid, right);
        
        // sort the left part
        mergeSort(arr, left, mid);
        // sort the right part
        mergeSort(arr, mid, right);
    }   
}

如果我在类中封装arr参数,我能达到性能吗?

public class MergeSort {
    int[][] arr;
    
    public void mergeSort(int left, int right) {
        // merge two parts
        merge(left, mid, right);
        
        // sort the left part
        mergeSort(left, mid);
        // sort the right part
        mergeSort(mid, right);
    }
}

因此,arr参数不会传递到堆栈。

mec1mxoz

mec1mxoz1#

变量保留了一个从ram中引用的变量。在哪里定义它并不重要,如果你使用的是1字节的ram,那么在哪里都是一样的。
重要的是,如果开发人员想在程序中使用这个变量,他可以很容易地使用它,并将它与其他变量分开。
如果说为什么要用参数,就要理解为什么要用函数,最简单的函数就是把你写的代码和其他代码分开,方便访问这些代码,这就是参数存在的原因。

相关问题