• 算法--两个有序数组合并



    两个有序数组合并

    关键点:从后往前进行比较,这样保证数组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
    }
     
     
    您的代码已保存
    答案正确:恭喜!您提交的程序通过了所有的测试用例
  • 相关阅读:
    Memcached 分布式缓存系统部署与调试
    nginx_笔记分享_php-fpm详解
    nginx_笔记分享_配置篇
    linux定时任务crond那些事!
    命令passwd报错因inode节点处理记录
    linux下定时任务
    linux内核堆栈
    c语言之单链表的创建及排序
    c语言常见的几种排序方法总结
    Tiny4412之外部中断
  • 原文地址:https://www.cnblogs.com/haozhengfei/p/fb141f9d10536cd0f82f0391cbabe04c.html
Copyright © 2020-2023  润新知