zoukankan      html  css  js  c++  java
  • NC22 合并两个有序的数组

    package NC;

    /**
    * NC22 合并两个有序的数组
    *
    * 给出一个整数数组 A 和有序的整数数组 B ,请将数组 B 合并到数组 A 中,变成一个有序的升序数组
    *
    * 数据范围: ,,
    *
    * 注意:
    * 1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n
    * 2.不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了
    * 3. A 数组在[0,m-1]的范围也是有序的
    *
    * @author Tang
    * @date 2021/9/29
    */
    public class Merge {

    /**
    * 用空间换时间
    *
    *
    * @param A
    * @param m
    * @param B
    * @param n
    */
    public void merge(int A[], int m, int B[], int n) {
    int[] temp = new int[m];
    for(int i = 0; i < temp.length; i++) {
    temp[i] = A[i];
    }

    int indexB = 0;
    int indexA = 0;
    int index = 0;

    while(index < A.length) {
    if(indexB >= n) {
    for(int i = indexA; i < m; i++) {
    A[index] = temp[indexA];
    index++;
    indexA++;
    }
    break;
    }

    while(indexA < m && temp[indexA] <= B[indexB]) {
    A[index] = temp[indexA];
    index ++;
    indexA++;
    }

    if(indexA >= m) {
    for(int i = indexB; i < n; i++) {
    A[index] = B[indexB];
    index++;
    indexB++;
    }
    break;
    }

    while(indexB < n && temp[indexA] >= B[indexB]) {
    A[index] = B[indexB];
    index++;
    indexB++;
    }

    }


    }

    public static void main(String[] args) {

    int A[] = {1,2,2,0,0,0};
    int B[] = {3,5,6};
    new Merge().merge(A,3,B,3);

    }

    }
  • 相关阅读:
    20200929-git地址
    20200917-1 每周例行报告
    20200917-2 词频统计
    20200917-3 白名单
    20200910-1 每周例行报告
    20200910-2 博客作业
    20200924-3 单元测试,结对
    20200924-2 功能测试
    20200924-5 四则运算试题生成,结对
    20200924-4 代码规范,结对要求
  • 原文地址:https://www.cnblogs.com/ttaall/p/15353560.html
Copyright © 2011-2022 走看看