1. 程式人生 > 實用技巧 >合併兩個有序陣列

合併兩個有序陣列

題目描述

給出兩個有序的整數陣列 和 ,請將陣列 合併到陣列 中,變成一個有序的陣列
注意:
可以假設 陣列有足夠的空間存放 陣列的元素, 和 中初始的元素數目分別為 和

程式碼實現

public class Solution {
    public void merge(int A[], int m, int B[], int n) {
    //dp[i]代表的意思是:第i位置上的值為A與B相比的最小的值
        int[] dp = new  int[m+n];//臨時陣列
        int i = 0;//A的下標初始值
        int j = 0;//B的下標初始值
        int index = 0;//dp的下標初始值
        while(i<m && j< n){//不到邊界
            dp[index++] = (A[i]<B[j])? A[i++] : B[j++];
            //把最小的值放在dp[index]中,然後對應的下標++
        }
        while(i < m){//A中剩餘的放到臨時陣列中
            dp[index++] = A[i++];
        }
         while(j < n){//B中的剩餘放到臨時陣列中
            dp[index++] = B[j++];
        }
        
        for(int k = 0; k < dp.length; k++){//將臨時陣列的東西放到題目要求的A陣列中
            A[k] = dp[k];
        }
                   
               
    }
}