Sort a linked list using insertion sort.算法
對一個單鏈表表進行插入排序spa
使用一個指針p指向未排好序的鏈表的第一個結點,在排序好的部分中找到找第一個大於等於q的前驅結點,將p對應的結點插入到正確位置,p從新指向未排好序的鏈表的第一個結點。直到鏈表完成排序好。.net
結點類指針
算法實現類code
public class Solution { public ListNode insertionSortList(ListNode head) { ListNode root = new ListNode(0); // 頭結點 root.next = head; ListNode p = head; ListNode q; ListNode r; while (p != null && p.next != null) { if (p.val <= p.next.val) { p = p.next; }else { q = p.next; p.next = q.next; r = root; // 找第一個大於等於q.val的前驅結點,由於在root.next到p之間一定存在這樣的結點 while (r.next.val <= q.val) { r = r.next; } q.next = r.next; r.next = q; } } return root.next; } }