对两个不同的数组进行排序

问题描述 投票:0回答:1

我在面试后端 Java 开发人员角色时被问到这个问题。

输入:

arr1 = {3,1,8,10,9,7};
arr2 = {6,4,5,2};

输出:

arr1 = [1,2,3,4,5,6]
arr2 = [7,8,9,10]

注意事项:

  • 不能使用额外空间(不能创建第三个数组或集合)。
  • 数组大小无法更改(arr1 必须为 6 大小,arr2 必须为 4 大小)。

我将两个数组中的所有元素按原样添加到名为“list”的列表中(未排序),然后使用流对列表进行升序排序。

list = list.stream()
           .sorted((n1, n2) -> n1-n2)
           .collect(Collectors.toList());

然后使用下面的代码根据列表中的元素的大小将列表中的元素添加回数组。

for(int i=0; i<arr1.length; i++) {
    arr1[i] = list.get(i);
}
for(int i=0; i<arr2.length; i++) {
    arr2[i] = list.get(i + arr1.length);
}
java arrays sorting
1个回答
0
投票

这不是一个令人满意的解决方案。 可以做什么:

Arrays.sort(arr1);
Arrays.sort(arr2);

然后使用

Arrays.binarySearch
System.arraycopy
合并两个数组,并可能再次对一个数组进行排序。

我把这份快乐留给了你。

该解决方案将是“原位”,就地,无需额外的内存。然后,该任务还需要一些实际的编程,合并两个数组。

© www.soinside.com 2019 - 2024. All rights reserved.