您的位置:首页 > 其它

【Leetcode】147. Insertion Sort List

2018-02-27 12:04 330 查看
Question:

Sort a linked list using insertion sort.

Tips:

使用插入排序,对一个链表进行排序。

思路:

新建一个头结点newHead,设置一个pre指针,指向newHead。

cur指针,指向原来的头结点head。

当pre.next的值大于cur的值,就将cur插入到pre之后,否则pre指针后移。

插入一个值之后再将pre指向newHead。

代码:

public ListNode insertionSortList(ListNode head) {
if(head==null ||head.next==null) return head;
//新的头结点
ListNode newHead= new ListNode(-1);
ListNode pre=newHead;
ListNode cur=head;
ListNode next=null;
while(cur!=null){
next=cur.next;
//pre的next值小于cur的值,pre指针后移。即找到cur应该插入的位置。
while(pre.next!=null && pre.next.val<cur.val){
pre=pre.next;
}
          //将cur插到pre与pre.next之间
cur.next=pre.next;
pre.next=cur;
cur=next;
pre=newHead;
}
return newHead.next;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: