147. Insertion Sort List

Sort a linked list using insertion sort.

含义:用插入排序来对列表进行排序

思路:可以构建一个临时的链表,然后将待排序的链表的每一个节点插入到临时链表中

 

    // 插入排序
    public ListNode insertionSortList(ListNode head) {
        ListNode dummy = new ListNode(0);
        ListNode pre = dummy;
        ListNode cur = head;
        while (cur != null) {
            pre = dummy;
            // 从伪头结点的下一个结点开始,(注意判空)
            // 让pre指向小于cur.val的最大结点(升序)
            while (pre.next != null
                    && pre.next.val < cur.val) {
                
                pre = pre.next;
            }
            // next暂存cur的下一个结点
            ListNode next = cur.next;
            // 把cur连接在pre后面
            // cur.next指向pre.next
            cur.next = pre.next;
            pre.next = cur;
            cur = next;
        }
        return dummy.next;
    }

 

posted @ 2017-10-25 15:50  daniel456  阅读(80)  评论(0编辑  收藏  举报