因为你将数组合并到临时数组num,再复制回nums1时还要用到m和n最初的值
所以前面不应进行m--和 n-- 会改变m和n的值
可以将while的循环条件m!=0变为i<m,n!=0变为j<n,同样可以遍历数组全部元素
修改后的代码和运行结果如图所示:
可见成功将nums2按升序合并到nums1中,望采纳~
int[] arr1 = {1,2,3,4,11}int[] arr2 = {6,7,8,9,10}
int newLength = arr1.length + arr2.length
int[] arr_target = new int[newLength]
//参数:源数组,源数组起始位置,目标数组,目标数组起始位置,复制长度
System.arraycopy(arr1, 0, arr_target, 0, arr1.length)
System.arraycopy(arr2, 0, arr_target, arr1.length, arr2.length)
//输出合并后数组
for (int i : arr_target) {
System.out.println(i)
}
//排序
Arrays.sort(arr_target)
//输出排序数组
for (int i : arr_target) {
System.out.println(i)
}
//逆序
int[] arr_reverse = new int[newLength]
int flag = 0
for (int i : arr_target) {
arr_reverse[newLength - flag - 1] = i
flag++
}
//输出逆序数组
for (int i : arr_reverse) {
System.out.println(i)
}
数组合并不一定非得遍历
具体的输出题主自己再修改吧