对链表进行插入排序。

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

插入排序算法:

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

示例 1:

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

代码

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode insertionSortList(ListNode head) {ListNode dumpy=new ListNode(Integer.MIN_VALUE);dumpy.next=head;ListNode pre=dumpy;while (head!=null)//遍历所以节点{ListNode temp=dumpy.next,curPre=dumpy;boolean change=false;while (temp!=head)//从当头节点到当前节点查找放置的位置{if(head.val<=temp.val)//将当前节点连到合适位置{pre.next=head.next;head.next=temp;curPre.next=head;change=true;break;}curPre=temp;temp=temp.next;} if(change)//当前节点已经变化位置的情况{head=pre.next;}else {//不需要变化位置的情况pre=head;head=head.next;}}return dumpy.next;}
}

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

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

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

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

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

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

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

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

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

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

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

  6. C#LeetCode刷题-链表

    链表篇 # 题名 刷题 通过率 难度 2 两数相加   29.0% 中等 19 删除链表的倒数第N个节点   29.4% 中等 21 合并两个有序链表 C#LeetCode刷题之#21-合并两个有序链 ...

  7. LeetCode 147. Insertion Sort List 链表插入排序 C++/Java

    LeetCode 147. Insertion Sort List 链表插入排序 C++/Java Sort a linked list using insertion sort. A graphic ...

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

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

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

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

最新文章

  1. Manning、Ostendorf、Povey、何晓冬、周明共话多模态NLP的机遇和挑战(附视频)
  2. tomcat主目录(ROOT.xml)和虚拟目录
  3. GAN作用——在我做安全的看来,就是做数据拟合、数据增强
  4. Delphi从Internet下载文件
  5. 根据年 -月查询这个月的第一天和最后一天
  6. requests模块发送带headers的Get请求和带参数的请求
  7. 每日一笑 | 史上最贴心的骗子
  8. CF1000G. Two-Paths(树形dp)
  9. QtCreate不能使用代码提示功能
  10. jsp源码oracle数据库,JSP与oracle数据库交互案例
  11. Laravel核心解读--Database(三) 模型CRUD
  12. Visual Studio Debug Practice
  13. 模拟封装ajax,模拟jQ封装ajax,调用时出现Uncaught ReferenceError: param is
  14. 电商数据分析与数据化运营
  15. 迅雷离线下载脚本 — LinuxTOY
  16. RepVGG:算法简介及repvgg.py代码解析
  17. Maya cmds pymel 快速选择hard edges(硬边)
  18. 2.大型网站架构演化的价值观
  19. 计算机网络上不去的原因是什么,路由器有信号却上不了网是什么原因?
  20. XGBoost原理介绍

热门文章

  1. java script简介
  2. ucosii中消息队列、消息邮箱、信号量的区别
  3. 优质学习内容(自用)
  4. Java高级工程师面试实战,mysqlsettimeout
  5. html知识笔记(三)——img标签、form表单
  6. ListView与.FindControl()方法的简单练习 #2 -- ItemUpdting事件中抓取「修改后」的值
  7. HttpStatusCode
  8. asp.net core Serilog的使用
  9. Java BigDecimal Rounding Mode
  10. 个人工作总结04(冲刺二)