归并排序-对两个有序链表合并成一个有序链表
需求
两个量表:
链表A:1-3-5-7-9
链表B:2-4-6-8-10
将上面的链表A和链表B合并成一个链表C,最终的顺序:
链表C:1-2-3-4-5-6-7-8-9-10
解决
使用归并排序中的合并阶段进行合并排序操作
public class guibing_list { public static void main(String[] args) { List<Integer> list1 = new ArrayList<Integer>(); list1.add(1); list1.add(3); list1.add(5); list1.add(7); List<Integer> list2 = new ArrayList<Integer>(); list2.add(2); list2.add(4); list2.add(6); list2.add(8); List<Integer> list3 = new ArrayList<Integer>(list1.size()+list2.size()); sort(list1 , list2 , list3); for(Integer in:list3){ System.out.print(in + " "); } System.out.println(); } public static void sort(List<Integer> list1 , List<Integer> list2 , List<Integer> result){ int i = 0 ;//定义左指针 int j = 0 ;//定义右指针 // while (i <= list1.size()-1 && j <= list2.size()-1){ if(list1.get(i) <= list2.get(j)){ result.add(list1.get(i++)); }else{ result.add(list2.get(j++)); } } //将剩余部分添加到list中 while (i <= list1.size()-1){ result.add(list1.get(i++)); } while (j <= list2.size()-1){ result.add(list2.get(j++)); } } }