合并两个数组的Java程序
给定两个数组,任务是合并或连接它们并将结果存储到另一个数组中。
例子:
Input: arr1[] = { 1, 3, 4, 5}, arr2[] = {2, 4, 6, 8}
Output: arr3[] = {1, 3, 4, 5, 2, 4, 6, 8}
Input: arr1[] = { 5, 8, 9}, arr2[] = {4, 7, 8}
Output: arr3[] = {5, 8, 9, 4, 7, 8}
方法一:使用预定义函数
- 首先,我们初始化两个数组,假设数组a和数组b ,然后我们将在两个数组中存储值。
- 之后,我们将计算数组a和b的长度并将其存储到变量中,比如a1和b1 。我们需要计算数组的长度,因为通过使用这些数组的长度,我们可以预测合并后元素将存储在其中的结果数组的长度。
- 然后通过使用 System.arraycopy(),我们合并两个数组,结果将存储在第三个数组中。
下面是上述方法的实现。
Java
// Java Program to demonstrate merging
// two array using pre-defined method
import java.util.Arrays;
public class MergeTwoArrays1 {
public static void main(String[] args)
{
// first array
int[] a = { 10, 20, 30, 40 };
// second array
int[] b = { 50, 60, 70, 80 };
// determines length of firstArray
int a1 = a.length;
// determines length of secondArray
int b1 = b.length;
// resultant array size
int c1 = a1 + b1;
// create the resultant array
int[] c = new int[c1];
// using the pre-defined function arraycopy
System.arraycopy(a, 0, c, 0, a1);
System.arraycopy(b, 0, c, a1, b1);
// prints the resultant array
System.out.println(Arrays.toString(c));
}
}
Java
// Java Program to demonstrate merging
// two array without using pre-defined method
import java.io.*;
public class MergeTwoArrays2 {
public static void main(String[] args)
{
// first array
int a[] = { 30, 25, 40 };
// second array
int b[] = { 45, 50, 55, 60, 65 };
// determining length of first array
int a1 = a.length;
// determining length of second array
int b1 = b.length;
// resultant array size
int c1 = a1 + b1;
// Creating a new array
int[] c = new int[c1];
// Loop to store the elements of first
// array into resultant array
for (int i = 0; i < a1; i = i + 1) {
// Storing the elements in
// the resultant array
c[i] = a[i];
}
// Loop to concat the elements of second
// array into resultant array
for (int i = 0; i < b1; i = i + 1) {
// Storing the elements in the
// resultant array
c[a1 + i] = b[i];
}
// Loop to print the elements of
// resultant array after merging
for (int i = 0; i < c1; i = i + 1) {
// print the element
System.out.println(c[i]);
}
}
}
输出
[10, 20, 30, 40, 50, 60, 70, 80]
时间复杂度: O(M + N)
辅助空间: O(M + N)
这里, M 是数组a的长度, N 是数组b的长度。
方法二:不使用预定义函数
- 首先,我们初始化两个数组,假设数组a和数组b ,然后我们将在这两个数组中存储值。
- 之后,我们将计算两个数组的长度并将其存储到变量中,比如a1和b1 。我们需要计算数组的长度,因为通过使用这些数组的长度,我们可以预测合并后元素将存储在其中的结果数组的长度。
- 然后将创建作为结果数组的新数组c 。
- 现在,第一个循环用于将第一个数组的元素一一存储到结果数组中,第二个循环用于将第二个数组的元素一一存储到结果数组中。
- 最后一个 for 循环用于打印结果数组的元素。
下面是上述方法的实现。
Java
// Java Program to demonstrate merging
// two array without using pre-defined method
import java.io.*;
public class MergeTwoArrays2 {
public static void main(String[] args)
{
// first array
int a[] = { 30, 25, 40 };
// second array
int b[] = { 45, 50, 55, 60, 65 };
// determining length of first array
int a1 = a.length;
// determining length of second array
int b1 = b.length;
// resultant array size
int c1 = a1 + b1;
// Creating a new array
int[] c = new int[c1];
// Loop to store the elements of first
// array into resultant array
for (int i = 0; i < a1; i = i + 1) {
// Storing the elements in
// the resultant array
c[i] = a[i];
}
// Loop to concat the elements of second
// array into resultant array
for (int i = 0; i < b1; i = i + 1) {
// Storing the elements in the
// resultant array
c[a1 + i] = b[i];
}
// Loop to print the elements of
// resultant array after merging
for (int i = 0; i < c1; i = i + 1) {
// print the element
System.out.println(c[i]);
}
}
}
输出
30
25
40
45
50
55
60
65
时间复杂度: O(M + N)
辅助空间: O(M + N)
这里, M 是数组a的长度, N 是数组b的长度。