• 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);

    }

    }
  • 相关阅读:
    电容
    IC行业常见用语
    MOSFET 的 I / V 特性曲线
    MOS 预夹断到底是什么
    [ Skill ] 如何 flatten 一个 list
    Metal 线宽如何选择
    [ Skill ] 如何读取一个文件并打印出来
    PHP 当前时间秒数+数值,然后再转换成时间。
    PHP HTTP GET POST
    做一个菜鸟,写一些自己自己编程错误的地方。个人所遇到的问题 保存处
  • 原文地址:https://www.cnblogs.com/ttaall/p/15353560.html
Copyright © 2020-2023  润新知