pública estática void principales (args String []) { NodoLista l1 = nuevo NodoLista (1 ); NodoLista l2 = nuevo NodoLista (2 ); NodoLista L3 = nuevo NodoLista (3 ); NodoLista l4 = nuevo NodoLista (4 ); NodoLista l5 = nuevo NodoLista (5 ); NodoLista L6 = nuevo NodoLista (6 ); / * * L1.next = l4; l4.next = L6; l6.next = L2; * / L2.next =L1; l3.next = L5; TwoNumbers NodoLista = nuevo Main4 () sortList (L2).; mientras que (twoNumbers =! nula ) { System.out.print (twoNumbers.val +"" ); twoNumbers = twoNumbers.next; } } //递归做归并排序 pública NodoLista sortList (cabeza NodoLista) { si (la cabeza == nula || head.next == nula ) { retorno de la cabeza; } NodoLista primera = cabeza; mediados NodoLista= GetMid (cabeza); NodoLista segunda = mid.next; mid.next = nulo ; primero = sortList (primera); segundos = sortList (segundos); retorno de combinación (primero, segundo); } //获取链表中节点 privado NodoLista getMid (nodo NodoLista) { NodoLista lento = nodo; NodoLista rápido = node.next; mientras que (= rápido! nula && fast.next =! nula ) { lentos = slow.next; rápidas =fast.next.next; } Devolver lenta; } //合并两个有序链表 privada de combinación NodoLista (NodoLista primera, segunda NodoLista) { si (== primera nula ) { retorno segundos; } Si (segunda == nula ) { volver primero; } Raíz NodoLista = nueva NodoLista (0 ); NodoLista tmp = raíz; mientras que (primero! = nula && segundo! = nula ) { si(first.val < second.val) { tmp.next = primero; tmp = tmp.next; primero = first.next; } Más { tmp.next = segundos; tmp = tmp.next; segundos = second.next; } } Si (primera == nula ) { tmp.next = segundos; } Si (segunda == nula ) { tmp.next =primero; } Devolver root.next; }