两个数组合并排序的java实现

本文介绍两种Java实现的数组合并排序方法。方法一适用于有序数组的合并,通过比较两个数组元素大小,依次添加到新数组中完成排序。方法二针对乱序数组,先合并后使用ArrayList进行排序。

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

两个数组合并排序的java实现

本文主要描述了两个数组的合并排序,并用Java代码进行实现的两种方法

- 方法一
用于合并两个有序数组,默认升序

package com.cyl.day05;


/**
 *  数组A:“1,7,9,11,13,15,17,19”;   
 *  数组b:“2,4,6,8,10” ;      
 *  两个数组合并为数组c,按升序排列。
 * @author CLY
 *
 */
public class MergeSort {
    public static void main(String[] args) {
        int[]  a= {1,7,9,11,13,15,17,19};
        int[] b = {2,4,6,8,10};
        //调用printArray方法,并将merge方法的返回值传给printArray
        printArray(merge(a, b));

    }

    /**
     * 
     * @param a:a数组
     * @param b:b数组
     * @return c:c数组
     */
    public static int[] merge(int[] a,int [] b) {

        int[] c = new int[a.length+b.length];
        //i用于标记数组a
        int i=0;
        //j用于标记数组b
        int j=0;
        //用于标记数组c
        int k=0;

        //a,b数组都有元素时
        while(i<a.length && j<b.length) {
            if(a[i]<b[j]) {
                c[k++] = a[i++];
            }else {
                c[k++] = b[j++];
            }
        }

        //若a有剩余
        while(i<a.length) {
            c[k++] = a[i++];
        }

        //若b有剩余
        while(j<b.length) {
            c[k++] = b[j++];
        }

        return c;

    }

    //打印数组
    public static void printArray(int[]  arr) {
        for(int i:arr) {
            System.out.print(i+ "  ");
        }
    }



}
  • 方法二
    此法用于将两个乱序的数组合并,然后对新合并成的数组进行排序
package com.cyl.day05;

import java.util.ArrayList;
import java.util.Collections;

/**
 *用于将两个乱序的数组合并,然后排序
 *@author cly
 */
public class MergeSortTwo {

        public static void main(String[] args) {

            //声明两个无序数组
            int[] a = {1,4,7,9,2,3,5,0 };
            int[] b = { 3,8,6,9,5 };

            //声明并定义新数组的长度
            int[] newArray = new int[a.length + b.length];

            //先将数组a中的所有元素添加到新数组中
            for (int i = 0; i < a.length; i++) {
                newArray[i] = a[i];
            }


            //再将数组b中的元素添加到新数组中
            for (int i = a.length, j = 0; i < a.length + b.length; i++, j++) {
                newArray[i] = b[j];
            }

            //利用数组列表对新数组进行排序
            ArrayList arr = new ArrayList();
            for(int i=0; i<newArray.length;i++){
                arr.add(newArray[i]);
            }
            Collections.sort(arr);
            //输出新数组
            System.out.println(arr);
        }

}
### Java合并两个数组排序 当处理两个已经排序数组时,可以采用多种方法来实现两者的合并排序。一种直观的方式是先将这两个数组简单拼接在一起形成一个较大的未排序数组,然后再对该大数组执行一次完整的排序操作。 然而更高效的做法是在合并的过程中保持新数组始终处于有序状态。下面提供一段基于这种思路的具体实现方式: 对于给定的例子 A=[1,2,3,4] 和 B=[2,4,5,6] ,目标是要得到最终的结果 [1,2,2,3,4,4,5,6] 。 ```java import java.util.Arrays; public class ArrayMergeSort { public static void main(String[] args){ int[] arr1 = {1, 2, 3, 4}; int[] arr2 = {2, 4, 5, 6}; System.out.print("Array1:"); for (int num : arr1) { System.out.print(num + " "); } System.out.println(); // 打印换行 System.out.print("Array2:"); for (int num : arr2) { System.out.print(num + " "); } int[] mergedSortedArr = mergeAndSort(arr1, arr2); System.out.println("\nMerged and Sorted Array:"); Arrays.stream(mergedSortedArr).forEach(e -> System.out.print(e+" ")); } private static int[] mergeAndSort(int[] a, int[] b){ int lengthA = a.length; int lengthB = b.length; int[] result = new int[lengthA + lengthB]; int i=0,j=0,k=0; while(i<lengthA && j<lengthB){ if(a[i]<=b[j]){ result[k++]=a[i++]; }else{ result[k++]=b[j++]; } } while(i<lengthA){ result[k++] = a[i++]; } while(j<lengthB){ result[k++] = b[j++]; } return result; } } ``` 这段程序定义了一个 `mergeAndSort` 方法用于接收两个整型数组作为参数,返回一个新的已排序的组合后的数组。通过比较来自两个输入数组中的元素大小关系依次填入新的结果数组中,确保了输出的新数组已经是按升序排列好了的状态[^1]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值