其他分享
首页 > 其他分享> > 147. 对链表进行插入排序

147. 对链表进行插入排序

作者:互联网

package leetcode;

public class demo_147 {
    public ListNode insertionSortList(ListNode head) {
        //最多有一个节点的链表直接返回
        if(head==null||head.next==null) {
            return head;
        }
        ListNode dummyNode=new ListNode();
        dummyNode.next=head;
        ListNode pre;
        //lastNode为有序链表的最后一个元素
        ListNode lastNode=head;
        ListNode cur=lastNode.next;
        while(cur!=null) {
            //当前元素比有序链表所有值都大
            if(lastNode.val<=cur.val) {
                lastNode=lastNode.next;
            }
            else {
                pre=dummyNode;
                //找出当前元素在有序链表中应该插入位置的上一个元素
                while(pre.next.val<cur.val) {
                    pre=pre.next;
                }
                //删除当前元素
                lastNode.next=cur.next;
                //在有序链表中插入当前元素
                cur.next=pre.next;
                pre.next=cur;
            }
            cur=lastNode.next;
        }
        return dummyNode.next;
    }
    
    
}

 

标签:147,head,ListNode,插入排序,lastNode,next,链表,null
来源: https://www.cnblogs.com/Yshun/p/16110912.html