插入排序Sort a linked list using insertion sort in Java
2015-08-25 10:41
501 查看
Sort a linked list using insertion sort in Java
package algorithm.sort; class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; } } public class SortLinkedList { public static ListNode insertionSortList(ListNode head) { if (head == null || head.next == null) return head; ListNode newHead = new ListNode(head.val); ListNode pointer = head.next; // loop through each element in the list while (pointer != null) { // insert this element to the new list ListNode innerPointer = newHead; ListNode next = pointer.next; if (pointer.val <= newHead.val) { ListNode oldHead = newHead; newHead = pointer; newHead.next = oldHead; } else { while (innerPointer.next != null) { if (pointer.val > innerPointer.val && pointer.val <= innerPointer.next.val) { ListNode oldNext = innerPointer.next; innerPointer.next = pointer; pointer.next = oldNext; } innerPointer = innerPointer.next; } if (innerPointer.next == null && pointer.val > innerPointer.val) { innerPointer.next = pointer; pointer.next = null; } } // finally pointer = next; } return newHead; } public static void main(String[] args) { ListNode n1 = new ListNode(2); ListNode n2 = new ListNode(3); ListNode n3 = new ListNode(4); ListNode n4 = new ListNode(3); ListNode n5 = new ListNode(4); ListNode n6 = new ListNode(5); n1.next = n2; n2.next = n3; n3.next = n4; n4.next = n5; n5.next = n6; n1 = insertionSortList(n1); printList(n1); } public static void printList(ListNode x) { if(x != null){ System.out.print(x.val + " "); while (x.next != null) { System.out.print(x.next.val + " "); x = x.next; } System.out.println(); } } }
相关文章推荐
- Java 手机号码格式化为182****5716
- java ubantu
- Java NIO 为什么比IO快
- 归并排序Merge Sort LinkedList in Java
- Java 生产者模式 消费者模式
- JAVA基础8(代码剖析)
- java中日期工具类
- 《Java实战开发经典》第五章5.3
- Java IO流->节点流->字节流:FileInputStream与FileOutputStream
- Eclipse快捷键大全
- Java总结
- SpringMVC单元测试
- eclipse 插件安装
- java内存分配分析/栈内存、堆内存
- 【JAVA】WEB开发实际任务——记录
- 深入理解Java的接口和抽象类
- Java程序性能优化
- 学习笔记:JAVA RMI远程方法调用简单实例
- java.lang.NoClassDefFoundError:的处理
- volatile关键字