147.Insertion Sort List---鏈表排序(直接插入)

題目連接ide

題目大意:對鏈表進行插入排序。post

解法:直接插入排序。代碼以下(耗時40ms):spa

 1     public ListNode insertionSortList(ListNode head) {
 2         ListNode first = new ListNode(0);
 3         ListNode pre = first, cur = head, post = null;
 4         while(cur != null) {
 5             //保存cur.next,由於要遍歷當前結點,下一次就要遍歷當前結點的下一個結點,因此在此次遍歷完以後須要從新賦值cur=post
 6             post = cur.next;
 7             //尋找能夠插入的結點位置
 8             while(pre.next != null && pre.next.val < cur.val) {
 9                 pre = pre.next;
10             }
11             //找到以後,將cur結點插入在pre和pre.next之間
12             cur.next = pre.next;
13             pre.next = cur;
14             //下一次pre再從頭開始找可插入的結點位置,因此要置爲開始頭節點
15             pre = first;
16             //下一次對cur.next結點進行排序,因此要將cur置回
17             cur = post;
18         }
19         return first.next;
20     }
View Code
相關文章
相關標籤/搜索