leetcode之Insertion Sort List
2014-04-19 14:52
281 查看
Insertion Sort List ,即用插入的方法排序链表。
主要思想:先从原始链表list摘掉一个节点,然后判断这个节点应该插入在sortedList的表头,中间,还是表尾。循环此步骤,直到原始链表为空。
源代码如下:
主要思想:先从原始链表list摘掉一个节点,然后判断这个节点应该插入在sortedList的表头,中间,还是表尾。循环此步骤,直到原始链表为空。
源代码如下:
import java.util.Random; public class InsertionSortLinkedList { public ListNode insertionSortList(ListNode head) { if(head == null || head.next == null) return head; ListNode sortedHead = head; //用p指向有序链表的第一个节点 head = head.next; sortedHead.next = null; ListNode currentNode = null; //当前待插入的节点 ListNode sortedNode = sortedHead; //游走在有序链表的指针 ListNode preSortedNode = sortedNode; //sortedNode的前驱 while(head != null) { currentNode = head; head = head.next; currentNode.next = null; //把当前节点从原始链表中摘出来 while(sortedNode != null && currentNode != null) { if(sortedHead.val >= currentNode.val) //如果插入点在链表的开始处 { currentNode.next = sortedHead; sortedHead = currentNode; // currentNode = null; break; } else if(sortedNode.val < currentNode.val) { preSortedNode = sortedNode; sortedNode = sortedNode.next; }else{ currentNode.next = preSortedNode.next; preSortedNode.next = currentNode; break; // currentNode = null; } } if(sortedNode == null) //插入点在链表表尾 { preSortedNode.next = currentNode; } sortedNode = sortedHead; currentNode = null; } return sortedHead; } public static void main(String[] args) { Random rand = new Random(); ListNode head = null; ListNode currentNode = null; for(int i = 0 ; i < 10; i ++) { if(head == null) { head = new ListNode(rand.nextInt(47)); currentNode = head; }else{ currentNode.next = new ListNode(rand.nextInt(47)); currentNode = currentNode.next; } } // System.out.println("ok!"); InsertionSortLinkedList isll = new InsertionSortLinkedList(); ListNode result = isll.insertionSortList(head); while(result != null) { System.out.print(result.val + " "); result = result.next; } // System.out.println("ok!"); } } //class ListNode { // int val; // ListNode next; // ListNode(int x) { // val = x; // next = null; // } //}
相关文章推荐
- LeetCode – Refresh – Insertion Sort List
- LeetCode Insertion Sort List 最新题解
- LeetCode Insertion Sort List
- leetcode - Insertion Sort List
- [leetcode] Insertion Sort List
- Leetcode NO.147 Insertion Sort List
- Leetcode: Insertion Sort List
- LeetCode-Insertion Sort List
- Leetcode: insertion-sort-list
- Insertion Sort List--LeetCode
- LeetCode Insertion Sort List
- leetcode - Insertion Sort List
- Insertion Sort List - Leetcode
- 【LeetCode】-Insertion Sort List
- leetcode做题总结,题目Insertion Sort List 2013/11/12
- leetcode_Insertion Sort List
- LeetCode(147) Insertion Sort List
- leetcode---insertion-sort-list---链表
- leetcode---Insertion Sort List
- LeetCode: Insertion Sort List