对链表进行插入排序。


插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。
每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。

插入排序算法:

  1. 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。
  2. 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。
  3. 重复直到所有输入数据插入完为止。

示例 1:

输入: 4->2->1->3
输出: 1->2->3->4

示例 2:

输入: -1->5->3->4->0
输出: -1->0->3->4->5

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* insertionSortList(ListNode* head) {
        ListNode *dummy = new ListNode(-1), *cur = dummy;
        while (head) {
            ListNode *t = head->next;
            cur = dummy;
            while (cur->next && cur->next->val <= head->val) {
                cur = cur->next;
            }
            head->next = cur->next;
            cur->next = head;
            head = t;
        }
        return dummy->next;
    }
};

147.对链表进行插入排序相关推荐

  1. 插入排序 链表 java_Java实现 LeetCode 147 对链表进行插入排序

    147. 对链表进行插入排序 对链表进行插入排序. 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将 ...

  2. leetcode 147. 对链表进行插入排序

    对链表进行插入排序. 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中. 插 ...

  3. LeetCode 147. 对链表进行插入排序(链表)

    1. 题目 对链表进行插入排序. 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的 ...

  4. 147. 对链表进行插入排序嗯嗯对的

    对链表插入排序,可以用两个指针p, q进行往后取结点操作: 开始如果head为空,直接返回NULL即可: 否则,让p指向head,q始终为p的下一个指针,这样每次对p操作后还能更新p为操作前的下一个指 ...

  5. Leetcode 147. 对链表进行插入排序 解题思路及C++实现

    解题思路: 这道题目,如果不借助其它stl工具,只是使用本身的ListNode的话,最主要的一个问题是,每次找插入位置的时候,没有办法进行从后往前回溯,所以只能从head头结点往后比较,然后找出应当插 ...

  6. python 对链表进行插入排序

    对链表进行插入排序 插入排序算法:插入排序是迭代的,每次只移动一个元素, 直到所有元素可以形成一个有序的输出列表. 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并 ...

  7. Leetcode 147.对链表进行排序

    对链表进行插入排序 对链表进行插入排序. 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表. 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它 ...

  8. leetcode147 对链表进行插入排序

    丢人,我就是按插入排序老老实实写的啊.... 别人肯定map了hhh. 对链表进行插入排序. 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入 ...

  9. LeetCode自我总结(对链表进行插入排序)

    对链表进行插入排序. 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中. 插 ...

  10. LeetCode-147:对链表进行插入排序

    题目描述: 对链表进行插入排序. 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表. 每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中 ...

最新文章

  1. 人工智能开放平台建设火热,AI发展未来可期
  2. VS2013导入opencv320配置属性文件
  3. SQLMAP注入教程-11种常见SQLMAP使用方法
  4. 活动社交产品怎么设计排序算法?
  5. JVM调优总结(二)-一些概念
  6. Oracle数据库与Access互导实例
  7. 邮箱服务器ip地址白名单,申请SSL证书时如何设置IP地址白名单和邮箱白名单
  8. 李彦宏:百度吹过的牛逼今天实现了!
  9. 光子不维护服务器,光子云和光子服务器
  10. Python标准库中的zipfile
  11. 单片机can通信可以接多少个设备_总结BMS上CAN收发器电路的几个要点
  12. Jboss 中配置 Oracle数据源
  13. [NAACL19]无监督循环神经网络文法 (URNNG)
  14. 奥的斯服务器故障显示m什么意思,奥迪斯电梯故障代码对照表 奥的斯电梯故障解决方法...
  15. 阿里、京东、拼多多都来了,互联网+疫苗是一门好生意吗?
  16. 销售订单配置项目说明
  17. PaddleX---MobileNetV3_ssld图像分类
  18. Chrome with proxy
  19. python读取、保存图片的方法
  20. HSL:色相,饱和度,亮度

热门文章

  1. list 如何判空以及为什么
  2. NLog 在winform和asp.net下使用快速攻略 .
  3. 虹膜识别应用多样化 6亿美元市场待挖掘
  4. 闲谈 Kubernetes 的主要特性和经验分享
  5. 怎样做网站,需要考虑的几个seo因素
  6. mysql定位数据库_MySQL数据库Query性能定位
  7. STC学习:光敏开关
  8. 顺序表的简单操作代码(c++实现)
  9. OpenCV-图像处理(21、霍夫圆变换)
  10. OpenCV-图像处理(11、形态学操作)