- 算法
- 1.头插法
- 2.插入前先记录下一个要插入的节点,然后从头开始找插入位置
public ListNode insertionSortList(ListNode head) { if (head == null || head.next == null) { return head; } ListNode dummy = new ListNode(Integer.MIN_VALUE); ListNode insertNode = head; while (insertNode != null) { ListNode insertNext = insertNode.next; ListNode prev = dummy; while (prev.next != null && prev.next.val <= insertNode.val) { prev = prev.next; } insertNode.next = prev.next; prev.next = insertNode; insertNode = insertNext; } return dummy.next; }
func insertionSortList(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head } dummy := &ListNode{} insertNode := head for insertNode != nil { insertNext := insertNode.Next prev := dummy for prev.Next != nil && prev.Next.Val <= insertNode.Val { prev = prev.Next } insertNode.Next = prev.Next prev.Next = insertNode insertNode = insertNext } return dummy.Next }