每日编程练习(JAVA)2021-01-12

这是一篇Java学习笔记,主要介绍合并两个有序数组且合并后仍为有序数组的方法。方法一是新建数组复制原数组元素后用Array.sort排序;方法二是循环遍历比较元素存入新数组,还处理较长数组多余元素。推荐初学者用方法二培养编程思维。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JAVA学习笔记(练习)

合并两个有序数组,合并后仍为有序数组
直接上代码:

package com.apesource.test;

import java.util.Arrays;

public class Test06 {

	public static void main(String[] args) {
		int[] array1 = {2,4,6,8,10,12};
		int[] array2 = {1,3,5,7,9,11,13,15,19,23};
		int[] result = megerArray(array1,array2);
		System.out.println(Arrays.toString(result));
	}
	
	
	public static int[] megerArray(int[]array1,int[]array2) {
		int[] resultarray = new int[array1.length+array2.length];
		//方法一
		System.arraycopy(array1, 0, resultarray, 0,array1.length );
		System.arraycopy(array2, 0, resultarray, array1.length, array2.length);
		Arrays.sort(resultarray);
		//方法二
		int p1 = 0,p2 = 0,i = 0;
		while(p1<array1.length && p2<array2.length) {
			if(array1[p1]<array2[p2]) {
				resultarray[i++]=array1[p1++];
			}else {
				resultarray[i++]=array2[p2++];
			}
		}
		
		//复制剩余元素
		if(p1<array1.length) {
			System.arraycopy(array1, p1, resultarray, i, array1.length-p1);;
		}else {
			System.arraycopy(array2, p2, resultarray, i, array2.length-p2);;
		}
		
		
		return resultarray;
		
	}
}

方法一简单粗暴,新建一个数组,将原来两个数组复制进去,再使用Array.sort方法排序。
方法二使用循环遍历,将两个数组中每个元素进行比较,按顺序存入新数组中,再比较两个数组的长度,将较长的数组多余的元素存入新数组。该方法代码行数多,但不用两次复制数组。推荐初学者使用方法二,培养编程思维。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值