1

我在我的代码中使用了这些,但我认为它们可能不如手动编码过程快。我搜索并发现了一些文章说 System.arraycopy() 实际上比手动复制数组要快。我不太确定这是否正确。

另外,函数 Array.sort() 比我们用代码写的快吗?

// I am merging the arrays here into a new integer array called newarray3 
    int[] newarray3= new int[input1.length + input2.length];
    System.arraycopy(input1, 0, newarray3, 0, input1.length);
    System.arraycopy(input2, 0, newarray3, input1.length, input2.length);

    //sorting the array.
    Arrays.sort(newarray3);

input1 和 input2 是要合并然后排序的两个数组。我想知道以这种方式编码是否会使我的程序变慢。或者它可能是别的东西。请帮忙。

4

2 回答 2

2

System.arraycopy 在几乎所有情况下都会比您手动执行的操作更快,因为它可以一次执行“批量”数据移动,而不是一次移动一个元素。主要的例外是相对较小的数组,因为 arraycopy 内部的初始处理,选择使用哪种算法,是非常重要的。

重新排序,没有一种单一的排序算法在所有条件下都是最优的。

于 2013-04-07T14:38:23.830 回答
1

arrayCopy()是本机方法,所以是的,它可能比手工编写的纯 Java 实现更快。另一方面,sort()是一个纯java方法,但是是为泛型排序而设计的——具体使用的算法取决于数组的数据类型,看看这篇文章了解详情。

您可以通过改进对象之间的比较并针对某种数据类型专门化算法来使自己的排序实现更快,实际上这是Java Performance Tuning一书中推荐的方法。无论如何,在使用分析器进行比较之前,您无法确定。

于 2013-04-07T14:21:29.870 回答