关注我们获取更多计算机考研信息

对链表进行插入,

插入排序算法:

插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。

每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。

重复直到所有输入数据插入完为止。

示例 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. 对链表进行插入排序相关推荐

  1. c++ 不插入重复元素但也不排序_面试时写不出排序算法?看这篇就够了

    小Hub领读: 本文主要详细讲述常见的八种排序算法的思想.实现以及复杂度.包括冒泡排序.快速排序.插入排序.希尔排序等等,文章讲解非常详细! 作者:静默虚空 https://juejin.im/pos ...

  2. c++ 不插入重复元素但也不排序_面试官爱问的 10 大经典排序算法,20+ 张图来搞定...

    (给算法爱好者加星标,修炼编程内功) 作者:技术让梦想更伟大 / 李肖遥 (本文来自作者投稿) 冒泡排序 简介 冒泡排序是因为越小的元素会经由交换以升序或降序的方式慢慢浮到数列的顶端,就如同碳酸饮料中 ...

  3. Leetcode 33.搜索旋转排序数组 (每日一题 20210707)

    整数数组 nums 按升序排列,数组中的值 互不相同 .在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [num ...

  4. 【Scratch】青少年蓝桥杯_每日一题_5.25_排序

    用心写好每一篇文章 效果图 一.题目背景 本题是Scratch编程问题,出现在第十届蓝桥杯省赛中. 二.编程实现 老师给小猫出了一道题:在列表1中生成5个在1~99范围内的随机整数﹐然后按照从大到小的 ...

  5. golang 排序list_Go语言使用sort包对任意类型元素的集合进行排序的方法

    本文实例讲述了Go语言使用sort包对任意类型元素的集合进行排序的方法.分享给大家供大家参考.具体如下: 使用sort包的函数进行排序时,集合需要实现sort.Inteface接口,该接口中有三个方法 ...

  6. java中list元素排序_java list集合元素根据某些字段排序

    一.jdk1.6的环境下 新建ComparatorSort类,并实现Comparator接口,重写compare方法 降序排序:o1的元素>o2的元素,并返回-1:o1的元素小于o2的元素,并返 ...

  7. java map按照value排序_基础:Java集合需要注意的 5 个问题

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 Java集合中的List.Set和Map作为Java集合食物链的顶级,可谓是各有千秋.本文将对于List.Set和Map之间的联系与区别进行 ...

  8. 八大排序算法合集 (归并排序、交换排序、插入排序、选择排序......)

    目录 一.归并排序 二.交换排序 1.快速排序 2.冒泡排序 三.插入排序 1.直接插入排序(基于顺序查找) 2.折半插入排序(基于折半查找) 3.希尔排序(基于逐趟缩小增量) 四.选择排序 0.直接 ...

  9. python中用def实现自动排序_用 python 实现各种排序算法

    常见集中排序的算法 归并排序 归并排序也称合并排序,是分治法的典型应用.分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并. 具体的归并排序就是,将一组无序数按n/2递归分解成只有一个元 ...

最新文章

  1. POJ - 2513 Colored Sticks(字典树+并查集+欧拉回路)
  2. html约束验证的例子,HTML5利用约束验证API来检查表单的输入数据的代码实例
  3. 广工 2013 c语言 试卷,广工2013-5-30、6-25概率论c试卷答案.doc
  4. IOS开发之页面跳转
  5. angular 点菜_Vue2与Angular5实现无人点餐、无人收银系统项目实战视频教程【组合套餐】(大地)...
  6. 2021级研究生人工智能高级语言程序设计考试说明
  7. VSCode 插件Code Runner 中文提示乱码
  8. 现代电力电子期末考试
  9. 【笔记分享】Android TV 红外蓝牙遥控器添加
  10. k8s关于Orphaned pod <pod_id> found,volume paths are still present on disk 的解决方法
  11. java 验证输入的是小数_java判断用户输入的是否至少含有N位小数的实例
  12. 戴尔T640服务器使用nvidia显卡风扇转速百分之百解决方案
  13. Intellij Idea整合JProfiler插件
  14. vscode开发小程序 去掉无用多余的代码片段
  15. 《巴黎圣母院》的经典感情观
  16. 人活着的目的是什么?
  17. 数学建模—降维—因子分析
  18. vue中本地pdf文件加载错误,文件不显示
  19. ssm+Vue计算机毕业设计寻迹边境丹东旅游网站(程序+LW文档)
  20. python爬虫式_Python网络爬虫(增量式爬虫)

热门文章

  1. Spring Boot 2.1 版本变化[翻译]
  2. Java 面试题(3)—— JVM
  3. jeesite使用心得(二)
  4. 小程序json字符串取值问题,怎么取出来的是undefined,eval函数不能用?
  5. Android 贴纸样式标签
  6. windows安装nvm
  7. cesium面板动态显示并跟随移动
  8. 从底层重学 Java 之 Stream 初探 Gitchat连接
  9. Flutter1.12与原生Android交互(kotlin)
  10. Spark单独集群模式部署