更新時間:2022-07-08 11:54:02 來源:動力節點 瀏覽1637次
java兩個數組合并排序是什么?動力節點小編給大家舉例說明。
給定兩個大小為N和M的數組排序A[]和B[]。任務是以非遞減順序將兩個數組合并為一個數組。
例子:
輸入: A[] =[3, 9, 10, 18, 23], B[] = [5, 12, 15, 20, 21, 25]
輸出: [3, 5, 9, 10, 12, 15, 18, 20, 21, 23, 25]
解釋:合并后的數組按排序順序包含兩個數組中的所有元素。
輸入: A[] = [1, 5], B[] = [4, 6, 7]
輸出: [1, 4, 5, 6, 7]
最幼稚的方法是簡單地將一個數組的元素合并到另一個數組中并對結果數組進行排序。
公共無效合并(int [] nums1,int m,int [] nums2,int n){
for (int i = 0; i < n; i++) {
nums1[i + m] = nums2[i];
}
Arrays.sort(nums1);
}
這里要注意的關鍵思想是兩個數組都是排序的。因此,利用這一事實,我們可以應用類似于歸并排序技術的方法。
創建一個大小為 N + M 的輔助數組,并在此數組中插入合并元素。
讓我們通過一個例子來理解這種方法:
算法
創建一個大小為N + M的輔助數組。
放入兩個指針i和j并將它們初始化為 0。
指針 i指向第一個數組,而指針 j指向第二個數組。
使用指針同時遍歷兩個數組,并在兩個數組中選擇最小的元素并插入到輔助數組中。
增加指針。
遍歷后,返回合并后的數組。
公共靜態無效mergeArrays(int [] arr1,int [] arr2,int n1,
int n2,int [] arr3){
int i = 0,j = 0,k = 0;
while (i < n1 && j < n2) {
if (arr1[i] < arr2[j])
arr3[k++] = arr1[i++];
否則
arr3[k++] = arr2[j++];
}
而 (i < n1)
arr3[k++] = arr1[i++];
而 (j < n2)
arr3[k++] = arr2[j++];
}
以上就是關于“Java合并兩個排序數組”的介紹,大家如果對此比較感興趣,想了解更多相關知識,可以關注一下動力節點的Java在線學習,里面的課程內容細致全面,很適合沒有基礎的小白學習,希望對大家能夠有所幫助哦。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習