Sort a linked list using insertion sort.
题解:实现链表的插入排序。
要注意的地方就是,处理链表插入的时候尽量往当前游标的后面插入,而不要往前面插入,后者非常麻烦。所以每次利用kepeler.next.val和head.val比较大小,而不是kepeler.val和head.val比较大小,因为如果用后者,要把head指向的节点插入到kepeler指向的节点的前面,如果kepeler指向的节点是头结点,就更麻烦了。
代码如下:
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode insertionSortList(ListNode head) { 14 ListNode newHead = new ListNode(0); 15 16 while(head != null){ 17 ListNode kepeler = newHead; 18 while(kepeler.next != null && kepeler.next.val < head.val){ 19 kepeler = kepeler.next; 20 } 21 22 ListNode temp = head.next; 23 head.next = kepeler.next; 24 kepeler.next = head; 25 head = temp; 26 } 27 28 return newHead.next; 29 } 30 }
【leetcode刷题笔记】Insertion Sort List,布布扣,bubuko.com
【leetcode刷题笔记】Insertion Sort List
原文地址:http://www.cnblogs.com/sunshineatnoon/p/3842932.html