有序数组的合并问题

1.有两个有序数组A,B。其中数组A的长度足以放下A和B 的所有元素,现在要求将A和B数组合并到A中,合并后仍要求A是一个有序数组,给出你的算法。

/**
     * 
     * @param a
     *            ,a数组的长度足够长,足够放下a和b的所有元素
     * @param b
     * @param size为数组a的有效元素个数
     *            <p>
     *            Description:
     *            </p>
     */
    public void arrayMerge(int a[], int b[], int size) {
        int storeIndex = size + b.length - 1;
        int i = size - 1;
        int j = b.length - 1;
        while (i >= 0 && j >= 0) {
            if (a[i] >= b[j]) {
                a[storeIndex] = a[i];// 大的元素直接放到最终位置
                i--;
                storeIndex--;
            } else if (a[i] < b[j]) {
                a[storeIndex] = b[j];// 将b中的元素插入到最终位置
                j--;
                storeIndex--;

            }
        }
        while (j >= 0) {
            a[storeIndex--] = b[j--];
        }
    }
public static void main(String[] args) {

        
        Sort s = new Sort();
        int a1[] = new int[8];
        a1[0] = 3;
        a1[1] = 8;
        a1[2] = 10;
        // int a2[] = { 1, 2, 4, 7 };
        int a2[] = { 7, 12 };
        s.arrayMerge(a1, a2, 3);
        System.out.println("after:" + Arrays.toString(a1));

    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2016 summer & 1、递归与分治法 递归的基本思想:一个直接或间接调用自身的算法 (1)斐波那契数列: ...
    橙小汁阅读 9,122评论 6 24
  • 最近被调过去做日志分析系统,接触所谓的大数据。学校的时候也做过空间数据库索引与数据挖掘研究(LBS方向),但是工作...
    HilaryQiao阅读 10,947评论 2 17
  • 本文排序全部基于升序,为了方便阅读全部基于C,代码将全部部署到github上。(为方便各位看官调试,代码中的打印数...
    _onePiece阅读 3,229评论 0 1
  • http://www.cnblogs.com/mfryf/archive/2012/07/31/2616697.h...
    寻雨的人阅读 6,001评论 0 1
  • 清晨依旧被鸟鸣声唤醒。躺着静听一会儿,觉得似与往日有不同——清越里有股抑制不住的欢欣。先是一只,两只,不一会儿远远...
    木棉之秋阅读 4,369评论 113 70