c++ 不插入重复元素但也不排序_【每日一题】125. 对链表进行插入排序
生活随笔
收集整理的這篇文章主要介紹了
c++ 不插入重复元素但也不排序_【每日一题】125. 对链表进行插入排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關注我們獲取更多計算機考研信息
????public?ListNode?insertionSortList(ListNode?head)?{
????????if(head?==?null)return?head;??//判空
????????ListNode?pre?=?head;??????????//雙指針維護前序
????????ListNode?cur?=?head.next;
????????while(cur?!=?null){
????????????if(cur.val?>=?pre.val){???//如果當前結點比上一個節點大,就沒必要移動了,
????????????????pre?=?pre.next;???????//只需要移動一位當前節點和維護的前序節點。
????????????????cur?=?cur.next;
????????????????continue;
????????????}
????????????pre.next?=?cur.next;?????//?不然的話,根據題意,把需要重定位的節點獨立出來。
????????????cur.next?=?null;
????????????if(cur.val?//特殊處理,如果當前節點比head節點還小,那就直接插在頭節點前,更新head
????????????????cur.next?=?head;
????????????????head?=?cur;
????????????????cur?=?pre.next;
????????????????continue;
????????????}
????????????ListNode?c?=?head.next;???//如果以上既不比上一個節點大,又不比頭節點小,那就是中間常規插入了。
????????????ListNode?p?=?head;
????????????while(cur.val?>?c.val){???//找到合適的插入位置,p--->c????p--->??插這??--->c
????????????????p?=?c;
????????????????c?=?c.next;
????????????}
對鏈表進行插入,
插入排序算法:
插入排序是迭代的,每次只移動一個元素,直到所有元素可以形成一個有序的輸出列表。
每次迭代中,插入排序只從輸入數據中移除一個待排序的元素,找到它在序列中適當的位置,并將其插入。
重復直到所有輸入數據插入完為止。
示例 1:
輸入: 4->2->1->3
輸出: 1->2->3->4
示例 2:
輸入: -1->5->3->4->0
輸出: -1->0->3->4->5
……? 思考時間……
如果你想好答案了
請查看代碼實現
▼
代碼實現
class?Solution?{????public?ListNode?insertionSortList(ListNode?head)?{
????????if(head?==?null)return?head;??//判空
????????ListNode?pre?=?head;??????????//雙指針維護前序
????????ListNode?cur?=?head.next;
????????while(cur?!=?null){
????????????if(cur.val?>=?pre.val){???//如果當前結點比上一個節點大,就沒必要移動了,
????????????????pre?=?pre.next;???????//只需要移動一位當前節點和維護的前序節點。
????????????????cur?=?cur.next;
????????????????continue;
????????????}
????????????pre.next?=?cur.next;?????//?不然的話,根據題意,把需要重定位的節點獨立出來。
????????????cur.next?=?null;
????????????if(cur.val?//特殊處理,如果當前節點比head節點還小,那就直接插在頭節點前,更新head
????????????????cur.next?=?head;
????????????????head?=?cur;
????????????????cur?=?pre.next;
????????????????continue;
????????????}
????????????ListNode?c?=?head.next;???//如果以上既不比上一個節點大,又不比頭節點小,那就是中間常規插入了。
????????????ListNode?p?=?head;
????????????while(cur.val?>?c.val){???//找到合適的插入位置,p--->c????p--->??插這??--->c
????????????????p?=?c;
????????????????c?=?c.next;
????????????}
微信關注“字節408考研”,
免費獲取各院校計算機軟件考研信息與專業課資料!
總結
以上是生活随笔為你收集整理的c++ 不插入重复元素但也不排序_【每日一题】125. 对链表进行插入排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs2015安装python3.6.8,
- 下一篇: LeetCode算法题-Jewels a