java常用算法之两个有序list的合并
2016-04-18 11:13
501 查看
/**
* 两个已顺序排序数组的合并
*
* @param aList
* @param bList
* @return
*/
public static List<Integer> mergeTwoSortList(List<Integer> aList,
List<Integer> bList) {
int aLength = aList.size(), bLength = bList.size();
List<Integer> mergeList = new ArrayList();
int i = 0, j = 0;
while (aLength > i && bLength > j) {
if (aList.get(i) > bList.get(j)) {
mergeList.add(i + j, bList.get(j));
j++;
} else {
mergeList.add(i + j, aList.get(i));
i++;
}
}
// blist元素已排好序, alist还有剩余元素
while (aLength > i) {
mergeList.add(i + j, aList.get(i));
i++;
}
// alist元素已排好序, blist还有剩余元素
while (bLength > j) {
mergeList.add(i + j, bList.get(j));
j++;
}
return mergeList;
}
public static void main(String[] args) {
List<Integer> aList = new ArrayList();
aList.add(3);
aList.add(6);
aList.add(7);
aList.add(10);
aList.add(13);
List<Integer> bList = new ArrayList();
bList.add(1);
bList.add(2);
bList.add(5);
bList.add(12);
bList.add(15);
bList.add(20);
bList.add(21);
List<Integer> mergeList = mergeTwoSortList(aList, bList);
System.err.println(mergeList.toString());
}
输出结果如下:
[1, 2, 3, 5, 6, 7, 10, 12, 13, 15, 16, 17, 20, 21, 22]
* 两个已顺序排序数组的合并
*
* @param aList
* @param bList
* @return
*/
public static List<Integer> mergeTwoSortList(List<Integer> aList,
List<Integer> bList) {
int aLength = aList.size(), bLength = bList.size();
List<Integer> mergeList = new ArrayList();
int i = 0, j = 0;
while (aLength > i && bLength > j) {
if (aList.get(i) > bList.get(j)) {
mergeList.add(i + j, bList.get(j));
j++;
} else {
mergeList.add(i + j, aList.get(i));
i++;
}
}
// blist元素已排好序, alist还有剩余元素
while (aLength > i) {
mergeList.add(i + j, aList.get(i));
i++;
}
// alist元素已排好序, blist还有剩余元素
while (bLength > j) {
mergeList.add(i + j, bList.get(j));
j++;
}
return mergeList;
}
public static void main(String[] args) {
List<Integer> aList = new ArrayList();
aList.add(3);
aList.add(6);
aList.add(7);
aList.add(10);
aList.add(13);
List<Integer> bList = new ArrayList();
bList.add(1);
bList.add(2);
bList.add(5);
bList.add(12);
bList.add(15);
bList.add(20);
bList.add(21);
List<Integer> mergeList = mergeTwoSortList(aList, bList);
System.err.println(mergeList.toString());
}
输出结果如下:
[1, 2, 3, 5, 6, 7, 10, 12, 13, 15, 16, 17, 20, 21, 22]
相关文章推荐
- java 对日期的操作
- Java HashSet
- Myeclipse和FlashBuilder的集成
- Java Enum(获得特定值之一)
- 【Spring实战】—— 11 通过AOP为特定的类引入新的功能
- Java 递归获得文件目录
- java性能优化 –gc日志收集与分析
- java性能优化 –gc日志收集与分析
- 跟Tom学spring4 helloworld
- Java File创建文件复制文件
- Eclipse+Maven搭建Wbe项目(1)
- 堆排序
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总
- 【Spring实战】—— 8 自动装配
- java中try 与catch的使用
- java 集合类
- java二维码工具类,中间带LOGO的,很强大
- java对excel表的操作,jxl的基本操作
- Java虚拟机探究之--JVM结构与内存模型
- 分享 做javaEE项目中常用的工具类中的方法!