- 題目一:對連結串列進行排序。
- 方法一:利用陣列進行排序。效率比較低。
- 程式碼
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *sortList(ListNode *head) { vector<int> res; ListNode *temp = head; int length = 0; while (temp){ res.push_back(temp->val); temp = temp->next, length++; } sort(res.begin(), res.end()); temp = head; int i =0; while (temp && i<length){ temp->val = res[i]; temp = temp->next; i++; } return head; } };
- 程式碼
- 方法二:對連結串列進行插入排序
- 分析:這裡其實和插入排序陣列類似,但是陣列是在原陣列的基礎上面進行插入排序的,但是對於連結串列來說比較複雜,所以新建連結串列進行插入排序。插入排序顧名思義就是一個一個的將數字插入進行,插入的過程中與連結串列的所有數字進行比較,找到合適的位置進行插入,所以我們設定兩個指標,pre指向新連結串列的頭部,cur指向當前連結串列的當前節點,之後比較兩個指標的值,依次插入即可
- 程式碼:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *sortList(ListNode *head) { if(head == NULL || head->next == NULL) return head; ListNode* dummyhead = new ListNode(0); ListNode* pre = dummyhead; ListNode* cur = head; while(cur != NULL) { ListNode* next = cur->next; //維護連結串列的下一個結點 pre = dummyhead; //重置pre為新連結串列頭開始 //在當前排好的新連結串列中找到第一個大於cur->val的結點 while(pre->next != NULL && pre->next->val <= cur->val) { pre = pre->next; } //當前pre的next結點的值大於cur的值,將cur插入到pre後 cur->next = pre->next; pre->next = cur; cur = next; //cur指向原連結串列的下一個節點 } return dummyhead->next; } };
- 方法一:利用陣列進行排序。效率比較低。
(連結串列)連結串列的排序問題
相關文章
- 單連結串列的排序問題排序
- 單連結串列建立連結串列出現問題
- 連結串列專題——面試中常見的連結串列問題面試
- 【連結串列問題】刪除單連結串列的中間節點
- 148. 排序連結串列排序
- 連結串列-插入排序排序
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 連結串列 - 單向連結串列
- 連結串列-迴圈連結串列
- 連結串列-雙向連結串列
- 連結串列反轉問題
- 連結串列4: 迴圈連結串列
- 連結串列-雙向通用連結串列
- 連結串列-單連結串列實現
- 【連結串列問題】打卡3:刪除單連結串列的中間節點
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- 連結串列專題
- 反轉連結串列系列問題
- 連結串列-雙向非通用連結串列
- 【LeetCode】->連結串列->通向連結串列自由之路LeetCode
- 連結串列入門與插入連結串列
- Leetcode_86_分割連結串列_連結串列LeetCode
- 【連結串列問題】打卡2:刪除單連結串列的第 K個節點
- 尋找連結串列相交結點問題
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 資料結構-單連結串列、雙連結串列資料結構
- 連結串列
- 【連結串列問題】打卡8:複製含有隨機指標節點的連結串列隨機指標
- LeetCode-Python-86. 分隔連結串列(連結串列)LeetCodePython
- LeetCode連結串列專題LeetCode
- 合併K個排序連結串列排序
- 反轉連結串列、合併連結串列、樹的子結構
- 連結串列(LinkedList)解題總結
- LeetCode刷題記125-148. 排序連結串列LeetCode排序
- 演算法:排序連結串列:歸併排序演算法排序
- 2024/12/1 【連結串列】 LeetCode 面試題 02.07. 連結串列相交LeetCode面試題
- 連結串列的ADT