<分区>
假设您有三个字符串数组 例如:
array1: as,hi,ji
array2: fo,gl
array3: gt,my,wx,zq
如您所见,各个数组已排序。 你将如何合并它们,合并后的数组也被排序? 我知道你可以先写一个方法来合并它们中的一对,然后将最后一个与这个新的合并。 大多数情况下,我只是感到困惑,如果你应该先合并然后排序,反之亦然。 归并排序有用吗?
<分区>
假设您有三个字符串数组 例如:
array1: as,hi,ji
array2: fo,gl
array3: gt,my,wx,zq
如您所见,各个数组已排序。 你将如何合并它们,合并后的数组也被排序? 我知道你可以先写一个方法来合并它们中的一对,然后将最后一个与这个新的合并。 大多数情况下,我只是感到困惑,如果你应该先合并然后排序,反之亦然。 归并排序有用吗?
最佳答案
我会用类似的东西
public static String[] join(String[]... sas) {
String[] result = new String[0];
for (String[] sa : sas) {
result = Arrays.copyOf(result, result.length + sa.length);
System.arraycopy(sa, 0, result, result.length - sa.length, sa.length);
}
return result;
}
然后
String[] s = join(s1, s2, s3);
Arrays.sort(s);
也许有任何外部库处理这个。
与效率相关,对数组进行排序具有~ N * log N(合并排序)的复杂性,这比复制(~ N)更糟糕,所以更好的方法是联合数组并排序一次而不是对每个特定的合并进行排序。 Java 类 Arrays 在内部使用合并排序。
关于java - 在java中合并数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22082612/