java解一個比較特殊的數(shù)組合并題
更新時間:2014年06月11日 08:48:31 作者:
這篇文章主要介紹了java解一個比較特殊的數(shù)組合并題,需要的朋友可以參考下
給定兩個排序后的數(shù)組A和B,其中A的末端有足夠的空間容納B,編寫一個方法將B合并到A并排序。
拿到這個題后,最直接的想法就是比較A和B中的元素,并按順序插入數(shù)組,直到遍歷完A和B中的所有元素。但是這樣做會有一個不好的地方:如果元素的插入位置在數(shù)組A的前端,那就必須將原來的數(shù)組往后移動。這會增加開銷。但是我們可以使用另外的一種辦法將元素插入數(shù)組A的末端。這樣我們不會出現(xiàn)元素移動的情況!代碼如下:
拿到這個題后,最直接的想法就是比較A和B中的元素,并按順序插入數(shù)組,直到遍歷完A和B中的所有元素。但是這樣做會有一個不好的地方:如果元素的插入位置在數(shù)組A的前端,那就必須將原來的數(shù)組往后移動。這會增加開銷。但是我們可以使用另外的一種辦法將元素插入數(shù)組A的末端。這樣我們不會出現(xiàn)元素移動的情況!代碼如下:
復(fù)制代碼 代碼如下:
/*
* lastA:a中的實際元素數(shù) lastB:b中的實際元素數(shù) mergeIndex是新數(shù)組的實際空間大小
*/
public static void mergeOrder(int[] a, int[] b, int lastA, int lastB) {
int indexA = lastA - 1;
int indexB = lastB - 1;
int mergeIndex = lastA + lastB - 1;
while (indexA >= 0 && indexB >= 0) {
if (a[indexA] > b[indexB]) {
a[mergeIndex] = a[indexA];
mergeIndex --;
indexA --;
} else {
a[mergeIndex] = b[indexB];
mergeIndex --;
indexB --;
}
}
while (indexB >= 0) {
a[mergeIndex] = b[indexB];
mergeIndex --;
indexB --;
}
}
* lastA:a中的實際元素數(shù) lastB:b中的實際元素數(shù) mergeIndex是新數(shù)組的實際空間大小
*/
public static void mergeOrder(int[] a, int[] b, int lastA, int lastB) {
int indexA = lastA - 1;
int indexB = lastB - 1;
int mergeIndex = lastA + lastB - 1;
while (indexA >= 0 && indexB >= 0) {
if (a[indexA] > b[indexB]) {
a[mergeIndex] = a[indexA];
mergeIndex --;
indexA --;
} else {
a[mergeIndex] = b[indexB];
mergeIndex --;
indexB --;
}
}
while (indexB >= 0) {
a[mergeIndex] = b[indexB];
mergeIndex --;
indexB --;
}
}
相關(guān)文章
SpringBoot使用AOP實現(xiàn)日志記錄功能詳解
這篇文章主要為大家介紹了SpringBoot使用AOP實現(xiàn)日志記錄功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
Spring?Security+JWT如何實現(xiàn)前后端分離權(quán)限控制
本篇將手把手教你用?Spring?Security?+?JWT?搭建一套完整的登錄認(rèn)證與權(quán)限控制體系,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
解決mybatisPlus 中的field-strategy配置失效問題
這篇文章主要介紹了解決mybatisPlus 中的field-strategy配置失效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
Spring Cloud 服務(wù)網(wǎng)關(guān)Zuul的實現(xiàn)
這篇文章主要介紹了Spring Cloud 服務(wù)網(wǎng)關(guān)Zuul的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
java組件commons-fileupload文件上傳示例
這篇文章主要為大家詳細(xì)介紹了java組件commons-fileupload實現(xiàn)文件上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
Spring?cloud網(wǎng)關(guān)gateway進(jìn)行websocket路由轉(zhuǎn)發(fā)規(guī)則配置過程
這篇文章主要介紹了Spring?cloud網(wǎng)關(guān)gateway進(jìn)行websocket路由轉(zhuǎn)發(fā)規(guī)則配置過程,文中還通過實例代碼介紹了Spring?Cloud?Gateway--配置路由的方法,需要的朋友可以參考下2023-04-04

