[英]Merge 2 sorted array in Ascending order in java
I am trying to merge 2 Ascending sort array in java.我正在尝试在 java 中合并 2 个升序排序数组。 I am new at java so I can not understand.
我是 java 的新手,所以我无法理解。 What is the problem with the following code?
以下代码有什么问题?
import java.lang.Math;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
int[] a = {10, 20, 30, 40};
int[] b = {50, 60, 70, 80};
int[] z = merge(a, b);
System.out.println(z);
}
public static int[] merge(int[] a, int[] b) {
int[] result = new int[a.length + b.length];
int indexResult = 0;
int indexA = 0;
int indexB = 0;
while (indexResult < result.length) {
if (indexB >= a.length || a[indexA] <= b[indexB])
result[indexResult++] = b[indexB++];
else
result[indexResult++] = a[indexA++];
}
return result;
}
}
My error is我的错误是
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Main.merge(Main.java:30)
at Main.main(Main.java:15)
indexB >= a.length
should be replaced with indexA >= a.length
. indexB >= a.length
应替换为 indexA >= indexA >= a.length
。
Following code may help以下代码可能会有所帮助
import java.lang.Math;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
int[] a = {10, 20, 30, 40};
int[] b ={50,60,70,80};
int[] z=merge( a, b);
for(int x: z)
System.out.println(x);
}
public static int[] merge(int[] a, int[] b) {
int[] result = new int[a.length + b.length];
int indexResult = 0;
int indexA = 0;
int indexB = 0;
while (indexResult < result.length) {
if (indexA >= a.length || a[indexA] >= b[indexB])
result[indexResult++] = b[indexB++];
else
result[indexResult++] = a[indexA++];
}
return result;
}
}
OUTPUT:- OUTPUT:-
10
20
30
40
50
60
70
80
There are many different ways to merge 2 arrays.This is another example:有许多不同的方法可以合并 2 个 arrays。这是另一个例子:
public class Main {
public static void main(String[] args) {
int[] a = { 10, 20, 30, 40 };
int[] b = { 50, 60, 70, 80 };
merge(a, b);
}
public static void merge(int[] a, int[] b) {
int[] z = new int[a.length + b.length];
int count = 0;
for (int i = 0; i < a.length; i++) {
z[i] = a[i];
count++;
}
for (int j = 0; j < b.length; j++) {
z[count++] = b[j];
}
for (int i = 0; i < z.length; i++)
System.out.print(z[i] + " ");
}
}
Output: Output:
10 20 30 40 50 60 70 80
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.