zoukankan      html  css  js  c++  java
  • 算法--两个有序数组合并


    两个有序数组合并

    关键点:从后往前进行比较,这样保证数组A有用的部分不会因为在合并的过程中覆盖掉
     

    第15节 有序数组合并练习题

     

    有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B。请编写一个方法,将B合并入A并排序。

    给定两个有序int数组AB,A中的缓冲空用0填充,同时给定A和B的真实大小int n和int m,请返回合并后的数组。

     
     
    1
    import java.util.*;
    2
    
    
    3
    public class Merge {
    4
         public int[] mergeAB(int[] A, int[] B, int n, int m) {
    5
            //标记A数组和B数组遍历位置的下标
    6
            int indexA = n - 1;
    7
            int indexB = m - 1;
    8
    
    
    9
            //遍历时标记元素放的位置
    10
            int index = n - 1 + m;
    11
            /**
    12
             * 每一轮遍历,比较的是此时数组A和数组B对应索引所指的元素,挑出最大的放到A数组最后index的位置
    13
             */
    14
            while(indexA >= 0 && indexB >= 0){
    15
                if(A[indexA] > B[indexB]){
    16
                    A[index] = A[indexA];
    17
                    indexA--;
    18
                }
    19
                else{
    20
                    A[index] = B[indexB];
    21
                    indexB--;
    22
                }
    23
                index--;
    24
            }
    25
            /**
    26
             * 查看B数组中的元素是否遍历完成,没有遍历完成此时遍历剩余的元素到A中
    27
             * 
    28
             * A:                       4   5   7   10
    29
             * B:1   2
    30
             */
    31
            while(indexB>=0){
    32
                A[indexB] = B[indexB];
    33
                indexB--;
    34
            }
    35
            return A;
    36
        }
    37
    }
     
     
    您的代码已保存
    答案正确:恭喜!您提交的程序通过了所有的测试用例
  • 相关阅读:
    安装jar包到本地仓库和远程仓库
    服务之间的资源权限校验
    函数指针
    malloc分配内存
    cuda_vs_报错无法解析的外部错误
    c语言读写文件
    C++使用using namespace std报错分析与解决方案
    MPI环境配置
    c语言学习
    openMP
  • 原文地址:https://www.cnblogs.com/haozhengfei/p/fb141f9d10536cd0f82f0391cbabe04c.html
Copyright © 2011-2022 走看看