数组合并是归并排序中的一个步骤,今单独就两个有序数组的合并给出代码实现。归并排序的另一个步骤就是递归,递归就是一个方法在其方法体的某个地方调用自己,这样就会将同一个逻辑不断的压栈,到达递归条件后,又一层层地出栈,直到所有方法被压栈的部分都被执行完毕,递归就结束了dd只是方法的参数值有所不同,只要设置好递归返回的条件,递归中方法能否继续压栈的条件一般也是根据方法的参数来设定的,应该就不会导致栈崩溃,最经典的例子就是计算阶乘。

问题描述:

给定两个数组,
若它们同为升序,则合并它们得到一个为升序的新数组,
如{1,3,5,7,9}和{2,4,6,8},
合并后得到{1,2,3,4,5,6,7,8,9};
若它们同为降序,则合并他们得到一个为降序的新数组,
如{8,6,4,2}和{9,7,5,3,1},
合并后得到{9,8,7,6,5,4,3,2,1}。

源码:
package compute;
/***@create by gzx on 2022-2-10*/
public class ArrayMerge {public static void main(String[] args) {//合并升序的两个数组int[] asc1 = {2,4,5,6,7,9};int[] asc2 = { 1,2,3,4,5,8 };int[] asc = mergeAsc(asc1, asc2);for (int i : asc) {System.out.print(i+" ");}System.out.println("\n----------------------");//合并降序的两个数组int[] desc1= {8,7,5,3,1};int[] desc2= {9,6,4,3,2,0};int[] desc = mergeDesc(desc1, desc2);for (int i : desc) {System.out.print(i+" ");}}/*** 要求a1,a2同为升序,才能合并出升序的mer数组* @param a1 一个升序数组* @param a2 一个升序数组* @return mer 升序合并后的数组*/public static int[] mergeAsc(int[] a1, int[] a2) {int len1 = a1.length;int len2 = a2.length;int mlen = len1 + len2;int[] mer = new int[mlen];int p1 = 0, p2 = 0, m = 0;// 分别用作数组a1,a2,mer的当前下标while (p1 < len1 && p2 < len2) {// 把a1和a2中当前下标对应的元素复制到mer中if (a1[p1] <= a2[p2]) {mer[m++] = a1[p1++];} else {mer[m++] = a2[p2++];}}while (p1 < len1) {// 如果a1还有剩余元素,则复制到mer中mer[m++] = a1[p1++];}while (p2 < len2) {// 如果a2中还有剩余元素,则复制到mer中mer[m++] = a2[p2++];}return mer;}/*** 要求a1,a2同为降序,才能得到同为降序的mer* @param a1 一个降序数组* @param a2 一个降序数组* @return mer 降序合并后的数组*/public static int[] mergeDesc(int[] a1, int[] a2) {int len1 = a1.length;int len2 = a2.length;int mlen = len1 + len2;int[] mer = new int[mlen];int p1 = 0, p2 = 0, m = 0;// 分别用作数组a1,a2,mer的当前下标while (p1 < len1 && p2 < len2) {// 把a1和a2中当前下标对应的元素复制到mer中if (a1[p1] <= a2[p2]) {mer[m++] = a2[p2++];} else {mer[m++] = a1[p1++];}}while (p1 < len1) {// 如果a1还有剩余元素,则复制到mer中mer[m++] = a1[p1++];}while (p2 < len2) {// 如果a2中还有剩余元素,则复制到mer中mer[m++] = a2[p2++];}return mer;}
}

运行结果:

1 2 2 3 4 4 5 5 6 7 8 9
----------------------
9 8 7 6 5 4 3 3 2 1 0

数组:合并同为升序或者降序的数组相关推荐

  1. js数组去重排序(升序、降序、随机)方法

    js原生去重排序 var hhl = [1, 5, 6, 3, 2, 7, 6, 1, 5, 4, 8, 6, 9]var newArr = [];//创建一个新数组var isRepeat = fa ...

  2. c#sort升序还是降序_C#中对数组或集合进行升序或降序排序

    在.net framework中,数组和集合都实现了用于排序的方法sort(),数组通过调用Array.Sort(数组名)排序,集合通过调用 集合对象.Sort()方法排序. 默认的排序是使用升序排列 ...

  3. iOS之数组的排序(升序、降序及乱序)

    1 #pragma mark -- 数组排序方法(升序) 2 3 - (void)arraySortASC{ 4 5 //数组排序 6 7 //定义一个数字数组 8 9 NSArray *array ...

  4. js中数组的冒泡排序(升序,降序),逆序输出。

    冒泡排序 冒泡排序即将数组中相邻的两个数字依次进行比较,如果想要得到升序的结果,即把判断条件设为第一个数大于第二个数后就交换位置即可.如果想要得到降序的结果,即把判断条件设置为如果第一个数比第二个数小 ...

  5. java list逆序_Java的数组和list升序,降序,逆序函数Collections.sort和Arrays.sort的使用...

    list升序,降序,逆序 Listlist =new ArrayList(); //如果list是 5 7 2 6 8 1 4 1.升序: Collections.sort(list) //list: ...

  6. 【Java】用sort实现对数组的升序和降序排序

    Java 用 sort 实现对数组的升序和降序排序 一.ArrayList 的升序与降序 二.数组升序 三.数组降序 方法一 方法二 一.ArrayList 的升序与降序 升序:Collections ...

  7. php 按key降序排序,PHP程序按升序和降序对整数数组进行排序

    给定一个整数数组,我们必须在PHP中按升序和降序对它们进行排序. 数组排序方法 在PHP中,有两种用于对数组进行排序的方法,sort()–用于按升序对数组进行排序. rsort()–用于按降序对数组进 ...

  8. 输入整型数组和排序标识,对其元素按照升序或降序进行排序(华为OJ系列)

    输入整型数组和排序标识,对其元素按照升序或降序进行排序接口说明原型:void sortIntegerArray(Integer[] pIntegerArray, int iSortFlag);输入参数 ...

  9. java comparator 降序排序_【转】java comparator 升序、降序、倒序从源码角度理解

    原文链接:https://blog.csdn.net/u013066244/article/details/78997869 环境 jdk:1.7+ 前言 之前我写过关于comparator的理解,但 ...

最新文章

  1. Http协议处理器——Http11Processor
  2. oracle 实现HA,oracle RAC的客户端HA配置
  3. Mocha BSM产品亮点——根本原因分析
  4. 三分钟看懂一致性哈希算法
  5. 添加请求头 retrofit_RxJava 与 Retrofit 结合的最佳实践
  6. pb 查询客户端ip地址_特别篇-SAP 客户端(配置、测试、生产)
  7. stm32数据手册boot_STM32问题集之BOOT0和BOOT1的作用
  8. spring mvc controller间跳转 重定向 传参
  9. python 封装对象数据_Python数据库封装实现代码示例解析
  10. Sublime 设置中文方法
  11. 敏捷开发中,团队成员认领的是任务还是用户故事?
  12. grpc加TLS加密和令牌认证
  13. 嵌入式软件工程师笔试面试指南-网络编程
  14. CentOS 7 安装好后,无法使用小键盘的解决办法
  15. No valid Maven installation found.
  16. 零基础教师成功转型数据分析师,它功不可没
  17. 文档在线翻译的方法介绍
  18. 常用Benchmark
  19. 【HDLBits 刷题 12】Circuits(8)Finite State Manchines 27-34
  20. RIP(IPV6) ciso

热门文章

  1. 网络七层结构是干啥的?看这篇文章就够了
  2. NumPy 超详细教程(1):NumPy 数组
  3. php onsubmit方法,表单元素的submit()方法和onsubmit事件应用概述
  4. oracle c op,ORACLE中内部函数SYS_OP_C2C和隐式类型转换
  5. 计算机专业范文推荐信,计算机专业留学推荐信范文
  6. 六级备考23天|CET-6|翻译技巧5|2019年12月真题|翻译荷花lotus|11:05-12:05
  7. python暑期实践8.7
  8. java实用教程考试_Java2实用教程试卷.doc
  9. 3.临床预测模型的构建--基础知识
  10. 四、BIRT数据集和参数的建立