Java基础练习5

Java基础练习5

 题目描述:合并两个有序数组
 例如:输入:Array1={1,3,5,7,9},Array2={2,4,6,8,10,12};
 输出结果:1,3,4,5,6,7,8,9,10,12

代码实现

public class Demo05 {
public static void main(String[] args) {
	int[] Array1= {1,3,5,7,9};
	int[] Array2= {2,4,6,8,10,12};
	int[] result=megerArray(Array1,Array2);
	System.out.println(Arrays.toString(result));
}
public static int[] megerArray(int[] Array1,int[] Array2) {
	//方式1:将两个数组复制到一个新数组中,再进行排序
   //定义新数组result
	int[] result=new int[Array1.length+Array2.length];
	//将Array1从下标为0开始复制到新数组result下标从0开始,共复制Array1.length个元素即Array1全部元素
    System.arraycopy(Array1, 0, result, 0, Array1.length);
	//将Array2下标为0开始复制到新数组result下标从Array1.length开始即复制完Array1紧接着复制Array2,共复制Array2.length个元素即Array2全部元素
    System.arraycopy(Array2, 0, result, Array1.length, Array2.length);
   //对新组进行排序
    Arrays.sort(result);
return result;
	//方式2:采用双下标,按照最小长度合并两个有序数组,再复制剩余数组
	int[] result=new int[Array1.length+Array2.length];
	int p1=0,p2=0,i=0;
	while(p1<Array1.length&&p2<Array2.length) {
		if(Array1[p1]<Array2[p2]) {
			result[i++]=Array1[p1++];
		}else {
			result[i++]=Array2[p2++];
		}
	}
	if(p1<Array1.length) {
		System.arraycopy(Array1, p1, result,i , Array1.length-p1);
	}else {
		System.arraycopy(Array2, p2, result, i, Array2.length-p2);
	}
	return result;
}
}

输出结果:

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值