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)元素移動的情況!代碼如下:
復制代碼 代碼如下:
/*
* 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 --;
}
}
相關文章
springboot使用log4j2異步日志提升性能的實現(xiàn)方式
這篇文章主要介紹了springboot使用log4j2異步日志提升性能,異步日志實現(xiàn)方式:將日志存入一個單獨的隊列中,有一個單獨的線程從隊列中獲取日志并寫入磁盤文件,需要的朋友可以參考下2022-05-05spring cloud 阿波羅 apollo 本地開發(fā)環(huán)境搭建過程
Apollo(阿波羅)是攜程框架部門研發(fā)的配置管理平臺,能夠集中化管理應用不同環(huán)境、不同集群的配置,配置修改后能夠實時推送到應用端,并且具備規(guī)范的權限、流程治理等特性2018-01-01SpringBoot HttpMessageConverter消息轉換器的使用詳解
在整個數(shù)據(jù)流轉過程中,前端的請求報文轉化為Java對象,Java對象轉化為響應報文,這里就用到了消息轉換器HttpMessageConverter2022-06-06Java HttpClient實現(xiàn)socks代理的示例代碼
這篇文章主要介紹了Java HttpClient 實現(xiàn) socks 代理的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-11-11基于javamelody監(jiān)控springboot項目過程詳解
這篇文章主要介紹了基于javamelody監(jiān)控springboot項目過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11