对链表进行插入排序。

从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。

每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。

插入排序算法:

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

示例 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 NULL;
ListNode *node = head ->next;
ListNode *newhead = new ListNode(0);
newhead ->next = head;
head ->next = NULL;
while(node != NULL)
{
ListNode *last = newhead;
ListNode *cur = newhead ->next;
ListNode *nextNode = node ->next;
bool isInsert = false;
while(cur != NULL)
{
if(node ->val > cur ->val)
{
last = cur;
cur = cur ->next;
}
else
{
isInsert = true;
last ->next = node;
node ->next = cur;
break;
}
}
if(!isInsert)
{
last ->next = node;
node ->next = NULL;
}
node = nextNode;
if(nextNode != NULL)
nextNode = nextNode ->next;
}
return newhead ->next;
}
};

Leetcode147. Insertion Sort List对链表进行插入排序的更多相关文章

  1. leetcode——Insertion Sort List 对链表进行插入排序(AC)

    Sort a linked list using insertion sort. class Solution { public: ListNode *insertionSortList(ListNo ...

  2. 9. Sort List && Insertion Sort List (链表排序总结)

    Sort List Sort a linked list in O(n log n) time using constant space complexity.                   H ...

  3. LeetCode147:Insertion Sort List

    题目: Sort a linked list using insertion sort. 解题思路: 按题目要求,直接进行插入排序 实现代码: #include <iostream> us ...

  4. The insertion sort algorithm expressed in pseudocode - 插入排序

    Computer Science An Overview _J. Glenn Brookshear _11th Edition procedure Sort (List) N ← 2; while ( ...

  5. LeetCode(147) Insertion Sort List

    题目 Sort a linked list using insertion sort. 分析 实现链表的插入排序 注意: 程序入口的特殊输入判断处理! 节点的链接处理,避免出现断链! AC代码 /** ...

  6. [Swift]LeetCode147. 对链表进行插入排序 | Insertion Sort List

    Sort a linked list using insertion sort. A graphical example of insertion sort. The partial sorted l ...

  7. [LeetCode] Insertion Sort List 链表插入排序

    Sort a linked list using insertion sort. 链表的插入排序实现原理很简单,就是一个元素一个元素的从原链表中取出来,然后按顺序插入到新链表中,时间复杂度为O(n2) ...

  8. insertion sort list (使用插入排序给链表排序)

    Sort a linked list using insertion sort. 对于数组的插入排序,可以参看排序算法入门之插入排序(java实现),遍历每个元素,然后相当于把每个元素插入到前面已经排 ...

  9. Insertion Sort List——链表的插入排序

    Sort a linked list using insertion sort. 这道题跟 Sort List 类似,要求在链表上实现一种排序算法,这道题是指定实现插入排序.插入排序是一种O(n^2) ...

随机推荐

  1. Query Rewrite Plugins

    [root@ZST1 ~] mysql -- </usr/local/mysql/share/install_rewriter.sql mydba@ [(none)]> create da ...

  2. 次短路 /// dijkstra oj1597

    题目大意: 给出一个有向图,求从 顶点a 到 顶点b 的次短路. 第一行是2个正整数 n 和 e,表示该有向图的顶点数和边数.3 < n ≤ 5000 , 3 < e < 40000 ...

  3. java笔试之完全数计算

    完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数. 它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身. 例如:28,它有约数1.2.4.7.14. ...

  4. Python全栈开发:css引入方式

    css的四种引入方式: 1.行内式 行内式是在标记的style属性中设定CSS样式.这种方式没有体现出CSS的优势,不推荐使用. <p style="color: red;backgr ...

  5. mysql主从复制linux配置(二进制日志文件)

    安装mysql,两台机器一主(192.168.131.153),一从(192.168.131.154) 主机配置 修改主/etc/my.cnf文件 添加 #server_id=153 ###服务器id ...

  6. 转载 pep8安装

    一.前提准备 在Python安装了pip的情况下,命令行输入 pip install autopep8 二.PyCharm设置 成功之后,打开PyCharm,File-->setting--&g ...

  7. CentOS7配置Docker镜像加速器

    1. 将默认的配置文件复制出来 cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service 2. 将加速器地 ...

  8. 北京服务业占GDP比重达81.7%

    北京服务业占GDP比重达81.7% 2017-05-17 19:46:00 来源: 中国新闻网(北京)举报   0 易信 微信 QQ空间 微博 更多 (原标题:北京服务业占GDP比重达81.7%)   ...

  9. 70 二叉树的层次遍历 II

    原题网址:http://www.lintcode.com/zh-cn/problem/binary-tree-level-order-traversal-ii/ 给出一棵二叉树,返回其节点值从底向上的 ...

  10. VS 断点不会命中的情况

    总结下遇到的几次断点无法命中的情况: 1.手误设置为release模式 如果是release模式的情况下,断点跳转命中情况是无法预知的,所以请修改成debug 2.与源文件不一致 这个情况是最常见的, ...