147. Insertion Sort List

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode insertionSortList(ListNode head) {
        if(head==null)
            return null;
        ListNode next=head;
        ListNode newhead=null;
        while(next!=null)
        {
            ListNode temp=next;
            next=next.next;
            temp.next=null;
            //开始插入
            if(newhead==null)
            {
                newhead=temp;
            }
            else
            {
                ListNode i=newhead;
                ListNode tail=null;
                while(i!=null)
                {
                    if(i.val>temp.val)
                    {
                        if(tail!=null)
                            tail.next=temp;
                        else
                            newhead=temp;
                        temp.next=i;
                        break;
                    }
                    tail=i;
                    i=i.next;
                }
                if(i==null)
                {
                    tail.next=temp;
                }
            }
        }
        return newhead;
        
    }
}
原文地址:https://www.cnblogs.com/aguai1992/p/5347871.html