1. 程式人生 > >Insertion Sort List -- LeetCode

Insertion Sort List -- LeetCode

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

                原題連結:  http://oj.leetcode.com/problems/insertion-sort-list/  
這道題跟 Sort List 類似,要求在連結串列上實現一種排序演算法,這道題是指定實現插入排序。插入排序是一種O(n^2)複雜度的演算法,基本想法相信大家都比較瞭解,就是每次迴圈找到一個元素在當前排好的結果中相對應的位置,然後插進去,經過n次迭代之後就得到排好序的結果了。瞭解了思路之後就是連結串列的基本操作了,搜尋並進行相應的插入。時間複雜度是排序演算法的O(n^2),空間複雜度是O(1)。程式碼如下: 
public ListNode insertionSortList(ListNode head) {    if(head == null)        return null;    ListNode helper = new ListNode(0);    ListNode pre = helper;    ListNode cur = head;    while(cur!=null
)    {        ListNode next = cur.next;        pre = helper;        while(pre.next!=null && pre.next.val<=cur.val)        {            pre = pre.next;        }        cur.next = pre.next;        pre.next = cur;        cur = next;    }    return
helper.next;}
這道題其實主要考察連結串列的基本操作,用到的小技巧也就是在 Swap Nodes in Pairs 中提到的用一個輔助指標來做表頭避免處理改變head的時候的邊界情況。作為基礎大家還是得練習一下哈。
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述