Insertion Sort List

Insertion Sort List

问题:

Sort a linked list using insertion sort.

思路:

  三行情书 旧旧 新 旧 旧 新

我的代码:

/**

 * Definition for singly-linked list.

 * public class ListNode {

 *     int val;

 *     ListNode next;

 *     ListNode(int x) {

 *         val = x;

 *         next = null;

 *     }

 * }

 */

public class Solution {

    public ListNode insertionSortList(ListNode head) {

        if(head == null || head.next == null)    return head;

        ListNode dummy = new ListNode(-1);

        dummy.next = head;

        ListNode tail = head;

        ListNode cur = head.next;

        while(cur != null)

        {

            if(cur.val >= tail.val)

            {

                cur = cur.next;

                tail = tail.next;

            }

            else

            {

                ListNode first = dummy.next;

                ListNode pre = dummy;

                while(cur.val > first.val)

                {

                    first = first.next;

                    pre = pre.next;

                }

                tail.next = cur.next;

                cur.next = pre.next;

                pre.next = cur;

                cur = tail.next;

            }

        }

        return dummy.next;

    }

}
View Code

 

你可能感兴趣的:(insert)