如何解决合并长度相等的排序数组时输出错误
我正在尝试合并2个长度相等的排序数组。但是,我没有得到所需的输出。 这是我的代码:
public static int[] mergeSorted(int[] arr1,int[] arr2){
int n = arr2.length;
int[] ans = new int[2*n];
int k = 0;
int i = 0;
int j = 0;
while(i < n && j < n){
if(arr1[i] <= arr2[j]){
ans[k] = arr1[i];
i++;
}
else{
ans[k] = arr2[j];
j++;
}
k++;
}
while(i < n){
ans[k] = arr1[i];
k++;
i++;
}
while(j < n){
ans[k] = arr2[j];
k++;
j++;
}
return ans;
}
public static void main(String[] args){
int[] arr1 = new int[]{1,3,5,100,34,29};
int[] arr2 = new int[]{2,4,6,9,13,300};
int[] ans = mergeSorted(arr1,arr2);
for(int el : ans)
System.out.print(el + " ");
}
输出:
1 2 3 4 5 6 9 13 100 34 29 300
很显然,这是不正确的。但是,此代码适用于较小的输入。我要去哪里错了?
编辑:测试用例是错误的,因为它们没有排序。代码很好。
解决方法
要使merge
操作起作用,要合并的两个数组应按排序顺序。第一个数组未按排序顺序:
int[] arr1 = new int[]{1,3,5,100,34,29};
将其更改为:
int[] arr1 = new int[]{1,29,100};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。