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; } }