一文告诉你如何将两个数组合并 - 极悦
首页 课程 师资 教程 报名

一文告诉你如何将两个数组合并

  • 2022-09-21 09:19:59
  • 780次 极悦

相信大家对Java中的数组已经有所了解,那么,如何将两个数组合并?小编给大家举例说明。给定两个数组,任务是将它们合并或连接并将结果存储到另一个数组中。

例子:

输入:arr1[] = { 1, 3, 4, 5}, arr2[] = {2, 4, 6, 8}
输出:arr3[] = {1, 3, 4, 5, 2, 4, 6, 8}
输入:arr1[] = { 5, 8, 9}, arr2[] = {4, 7, 8}
输出:arr3[] = {5, 8, 9, 4, 7, 8}

方法一:使用预定义函数

首先,我们初始化两个数组,比如说数组a和数组b,然后我们将在两个数组中存储值。

之后,我们将计算数组a和b的长度,并将其存储到变量中,比如a1和b1。我们需要计算数组的长度,因为通过使用这些数组的长度,我们可以预测合并后元素将存储在其中的结果数组的长度。

然后通过使用System.arraycopy(),我们合并两个数组,结果将存储在第三个数组中。

下面是上述方法的实现。

// 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));
	}
}

输出

[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 for 循环语句用于打印结果数组的元素。

下面是上述方法的实现。

// 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的长度。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交