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; }