a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 學院 > 開發設計 > 正文

Leetcode 147. Insertion Sort List

2019-11-11 05:12:22
字體:
來源:轉載
供稿:網友

Sort a linked list using insertion sort.

s思路: 1. insertion sort這個思路是這樣的:遍歷從第二個數據開始,第一個數據默認是排好序的,把第二個數據和第一個數比較插入,從而sorted的序列expanded by one, while the unsorted sequence is shrinked by one as well. 復雜度o(n^2). 這里寫圖片描述 2. 通常的insertion sort都是默認在vector上執行,這道題新穎的地方就是在鏈表上來做。也就是,當鏈表遇到insertion sort,會有什么事情發生? 3. 其實可以見怪不怪的,這兩個對象(鏈表和insertion sort)一旦被人們發現,他們之間的關系就已經當即存在,只是現在我才看到而已,本身不是什么新鮮事! 4. 參考了以前代碼,添加dummy好做一些,自己用pointer-to-pointer搞不定,搞暈了:cur代表sorted的最右邊,每次用cur和cur->next比較,如果cur->val > cur->next->val,則此時就是邊界,然后讓PRe從dummy開始往后移動找到pre->next->val > cur->next->val,然后把cur->next這個節點插入到pre和pre->next之間。 5. 自己做的時候,嘗試中規中矩的做:每次把sorted的右邊界的next節點和之前的所有節點比較,找到合適的位置,然后插入。由于頭節點可能改變,因此也用dummy節點;在比較的時候,也知道要找的插入的位置必須是某個指針的next,而不是某個指針之前的位置(因為鏈表只有next域沒有pre域)。這樣做的問題是,不能充分利用鏈表中可能存在的排好序的子鏈表,例如:3->2->4->1,當前兩個排好序時:2->3->4->1,2和3 就不需要排序,因為是以及排好序的,所以可以節省時間! 6. 整理一下思路:這種思路好在,每次從unsorted部分取第一個數都和sorted的最后一個數比較:如果大,則直接移動sorted的邊界;如果小,才比較去找這個數應該在sorted部分的正確位置。 7. 自己為啥沒想到呢?仔細觀察自己的思路:默認一個新的數,直接就和sorted的部分從左往右比較了;先和右邊界比較可以省事很多這點沒有意識到!

//方法1:在sorted和unsorted的邊界下功夫,代碼容易!class Solution {public: ListNode* insertionSortList(ListNode* head) { // if(!head) return NULL; ListNode* dummy=new ListNode(0),*cur=head; dummy->next=head; ListNode *pre=dummy; while(cur){ if(cur->next&&cur->next->val<cur->val){ while(pre->next&&pre->next->val<cur->next->val) pre=pre->next; ListNode* pnext=pre->next; pre->next=cur->next; cur->next=cur->next->next; pre->next->next=pnext; pre=dummy; }else cur=cur->next;//bug } delete dummy; return dummy->next; }};
上一篇:點法式方程

下一篇:poj 2367 拓撲排序

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩精品av一区二区三区 | 北条麻妃99精品青青久久 | 欧美影 | 日韩三级在线 | 亚洲精品电影 | 91视频国产一区 | 亚洲欧美v国产一区二区 | 国产精品国产自产拍高清av | 免费一二区| 国产精品免费av | 国产大奶视频 | 国产一区二区精品在线 | www欧美 | 日韩亚洲欧美在线观看 | a∨在线观看 | 久久久久久亚洲 | 久久99国产精一区二区三区 | 999国产一区二区三区四区 | 在线视频二区 | 中文精品在线 | 国产美女高潮一区二区三区 | bxbx成人精品一区二区三区 | 国产精品爽 | 国产成人精品综合 | 超碰精品在线观看 | 91精品国产综合久久精品 | 国产高潮在线观看 | 看a网址| 午夜无码国产理论在线 | 久久精品免费视频观看 | 99riav国产精品 | 国产精品免费在线 | 综合久久综合久久 | 精品乱码久久久 | 免费黄色毛片视频 | 精品国产乱码久久久久夜 | 日韩欧美网 | 久久e久久 | 久久免费精品 | 99视频精品 | 99er视频|