//使用集合提供的工具和方法
公共靜態列表& lt整數& gt合並(列表& lt整數& gta、List & lt整數& gtb) {
//a,b不為空
//都放在壹個集合裏,這樣元素就可以合並了。
設置& lt整數& gtset = new HashSet & lt整數& gt(壹);
set . addall(b);
//將集合中的元素放入壹個列表中,然後將它們變成壹個數組。
integer[]array = new ArrayList & lt;整數& gt(設定)。toArray(新整數[1]);
//按升序排序
Arrays.sort(數組);
//將排序後的數組轉換為列表
返回arrays . as list(array);
}
//自己寫的算法,其中A是升序列表,B是降序列表。
公共靜態列表& lt整數& gtmerge2(列表& lt整數& gta、List & lt整數& gtb) {
//a,b不為空
int aSize = a . size();
int bSize = b . size();
列表& lt整數& gtresult = new ArrayList & lt整數& gt();
int aIndex = 0;//升序列表從第壹個地方開始。
int bIndex = bSize-1;//降序列表從末尾開始。
int aEl
int bEl
//循環終止條件:遍歷了A或B列表。
while(aIndex & lt;aSize & amp& ampbIndex & gt= 0) {
aEl = a . get(aIndex);
bEl = b . get(bIndex);
如果(aEl & ltbEl) {
result . add(aEl);
aindex++;
}否則{
result . add(bEl);
bIndex-;
}
}
//將未完成列表中的元素添加到結果中(包括任何列表為空的情況)。
if(aIndex & lt;aSize) {
for(int I = ain dex;我& ltaSizei++) {
result . add(a . get(I));
}
}
else if(bIndex & gt;0) {
for(int I = bIndex;我& gt= 0;我- ) {
result . add(b . get(I));
}
}
返回結果;
}