java解一個(gè)比較特殊的數(shù)組合并題
更新時(shí)間:2014年06月11日 08:48:31 作者:
這篇文章主要介紹了java解一個(gè)比較特殊的數(shù)組合并題,需要的朋友可以參考下
給定兩個(gè)排序后的數(shù)組A和B,其中A的末端有足夠的空間容納B,編寫一個(gè)方法將B合并到A并排序。
拿到這個(gè)題后,最直接的想法就是比較A和B中的元素,并按順序插入數(shù)組,直到遍歷完A和B中的所有元素。但是這樣做會有一個(gè)不好的地方:如果元素的插入位置在數(shù)組A的前端,那就必須將原來的數(shù)組往后移動(dòng)。這會增加開銷。但是我們可以使用另外的一種辦法將元素插入數(shù)組A的末端。這樣我們不會出現(xiàn)元素移動(dòng)的情況!代碼如下:
拿到這個(gè)題后,最直接的想法就是比較A和B中的元素,并按順序插入數(shù)組,直到遍歷完A和B中的所有元素。但是這樣做會有一個(gè)不好的地方:如果元素的插入位置在數(shù)組A的前端,那就必須將原來的數(shù)組往后移動(dòng)。這會增加開銷。但是我們可以使用另外的一種辦法將元素插入數(shù)組A的末端。這樣我們不會出現(xiàn)元素移動(dòng)的情況!代碼如下:
復(fù)制代碼 代碼如下:
/*
* lastA:a中的實(shí)際元素?cái)?shù) lastB:b中的實(shí)際元素?cái)?shù) mergeIndex是新數(shù)組的實(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í)際元素?cái)?shù) lastB:b中的實(shí)際元素?cái)?shù) mergeIndex是新數(shù)組的實(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使用log4j2異步日志提升性能的實(shí)現(xiàn)方式
這篇文章主要介紹了springboot使用log4j2異步日志提升性能,異步日志實(shí)現(xiàn)方式:將日志存入一個(gè)單獨(dú)的隊(duì)列中,有一個(gè)單獨(dú)的線程從隊(duì)列中獲取日志并寫入磁盤文件,需要的朋友可以參考下2022-05-05spring cloud 阿波羅 apollo 本地開發(fā)環(huán)境搭建過程
Apollo(阿波羅)是攜程框架部門研發(fā)的配置管理平臺,能夠集中化管理應(yīng)用不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性2018-01-01SpringBoot HttpMessageConverter消息轉(zhuǎn)換器的使用詳解
在整個(gè)數(shù)據(jù)流轉(zhuǎn)過程中,前端的請求報(bào)文轉(zhuǎn)化為Java對象,Java對象轉(zhuǎn)化為響應(yīng)報(bào)文,這里就用到了消息轉(zhuǎn)換器HttpMessageConverter2022-06-06SpringBoot?如何將項(xiàng)目打包成?jar?包
這篇文章主要介紹了SpringBoot如何將項(xiàng)目打包成jar包,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08Java HttpClient實(shí)現(xiàn)socks代理的示例代碼
這篇文章主要介紹了Java HttpClient 實(shí)現(xiàn) socks 代理的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-11-11基于javamelody監(jiān)控springboot項(xiàng)目過程詳解
這篇文章主要介紹了基于javamelody監(jiān)控springboot項(xiàng)目過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11