package com.justalk.javademo.acm
/**
* 输入:1->2->4, 1->3->4
* 输出:1->1->2->3->4->4
*/
public class ArrayListTest {
static class ListNode {
public ListNode(int var) {
this.var = var
}
int var
ListNode next
@Override
public String toString() {
StringBuffer stringBuffer = new StringBuffer()
stringBuffer.append(var)
while (next!=null) {
stringBuffer.append("->")
stringBuffer.append(next.var)
next = next.next
}
return stringBuffer.toString()
}
}
public static void main(String[] args) {
ListNode listNode = new ListNode(1)
ListNode listNode2 = new ListNode(2)
ListNode listNode4 = new ListNode(4)
listNode.next = listNode2
listNode2.next = listNode4
ListNode listNode1Copy = new ListNode(1)
ListNode listNode3 = new ListNode(3)
ListNode listNode4Copy = new ListNode(4)
listNode1Copy.next = listNode3
listNode3.next = listNode4Copy
ListNode resultNodes = mergeSort(listNode, listNode1Copy)
System.out.println(resultNodes)
}
private static ListNode mergeSort(ListNode first, ListNode second) {
ListNode start = first
if (second != null && first != null) {
//将second的数据有序的插入first
while (second != null) {
System.out.println("外部循环了一次")
int var = second.var
while (first != null ) {
if (first.next != null) {
if (var >= first.var && var < first.next.var) {
System.out.println("内部插入了一次")
ListNode temp = new ListNode(var)
temp.next = first.next
first.next = temp
break
}
} else {
if (var >= first.var) {
System.out.println("内部插入了一次")
ListNode temp = new ListNode(var)
temp.next = first.next
first.next = temp
break
}
}
first = first.next
}
first = start
second = second.next
}
}
return start
}
}