1)题目:将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表
2)思路:listA,listB合并成listAB;len(listAB)=len(listA)+len(listB);同时从头到尾依次遍历listA和listB,假如listA[i]<listB[j],将listA[i]加入listAB中,i=i+1,j=j;假如listA[i]>listB[j],将listB[i]加入listAB中,j=j+1,i=i依次遍历,直到其中一条顺序表遍历完,将另一个顺序表剩下的未遍历的元素全部加listAB中。
3)代码:
源码中使用到的ArrrayList,是调用的是自己实现的ArrayList,自己实现的ArrayList源码地址:https://blog.youkuaiyun.com/u012441545/article/details/89667486
package com.sam.datastruct.arrayList;
public class P2_07 {
public ArrayList<Integer> function(ArrayList<Integer> listA, ArrayList<Integer> listB){
if (listA.isEmpty()) {
return listB;
}
if (listB.isEmpty()) {
return listA;
}
ArrayList<Integer> listAB = new ArrayList<>(listA.size() + listB.size());
int i = 0;
int j = 0;
while(i < listA.size() && j < listB.size()){
if (listA.get(i) < listB.get(j)) {
listAB.add(listA.get(i ++));
}else {
listAB.add(listB.get(j ++));
}
}
while(i < listA.size()){
listAB.add(listA.get(i ++));
}
while(j < listB.size()){
listAB.add(listB.get(j ++));
}
return listAB;
}
public static void main(String[] args) {
P2_07 p = new P2_07();
ArrayList<Integer> listA = new ArrayList<>();
ArrayList<Integer> listB = new ArrayList<>();
listA.initNotDecs(40);
listB.initNotDecs(35);
ArrayList<Integer> listAB = p.function(listA, listB);
System.out.println(listAB.toString());
}
}