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