java小题目,输入两个数组,合并,排序

Python016

java小题目,输入两个数组,合并,排序,第1张

package testimport java.util.Arraysimport java.util.Comparatorpublic class JButtonTest{public static void main ( String[] args ){int[] arr1 = { 3, 1, 23 } int[] arr2 = { 27, 7, 2 } String temp = Arrays.toString (arr1) + Arrays.toString (arr2) temp = temp.replaceAll ("\\]\\[", ",").replaceAll ("\\s", "").replaceAll ("[\\[\\]]", "") String[] result = temp.split ("\\,") System.out.println (Arrays.toString (result)) Arrays.sort (result, new Comparator<String>(){@Overridepublic int compare ( String o1, String o2 ){int a = Integer.parseInt (o1), b = Integer.parseInt (o2) if (a >b){return 1 }else if (a <b){return -1 }else{return 0 }}}) System.out.println (Arrays.toString (result)) }}

因为你将数组合并到临时数组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)

}

数组合并不一定非得遍历

具体的输出题主自己再修改吧