Sort List

2023-11-17

Merge Sort

链表的merge Sort 就是 ”找中间结点”算法  +  “merge sorted List”算法。

1) 快慢指针法定位到中间结点p,从p前面断开(维护prev),p是后半部分链表头,得到两个子链表。

2) 分别递归merge两个子链表。

3)merge 两个排好序的子链表。


Quick Sort

1)partition 

a)  先建两个链表再对接法:以head的值为pivot值,分别插入两个新链表尾部,初始时左链表为空,head插入右链表。

b) 和轴相等的情况: 插入右边链表头部。这样partition的结果是三部分,左边的小于,中间的等于,右边的大于。只是左右两边的部分参加递归,中间相等的部分不需要。

2)递归quick sort 左右两边的子链表。

递归函数设计:链表的quick sort是需要返回值的,返回排好序的新表头。参数除了表头还需要一个endExclusive 结点指示链表到何处结束。


比较:

merge sort和 quick sort都是 分治法, 前者是先递归后merge,后者是先partition后递归。

merge sort:

divide:找中间结点

conquer: 递归+ base case:空或者一个结点时直接返回head

combine: merge 两个有序链表。


quick sort

divide:partition。

conquer: 递归+ base case:空或者一个结点时直接返回head

combine: 无



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sort List 的相关文章

随机推荐

  • 测试开发1

    基本概念 一 测试开发基本概念 1 什么是软件测试 2 软件测试和软件开发的区别 3 你为什么选择软件测试 4 什么是需求 二 测试开发基础 1 需求是软件测试的依据 2 用户名和密码登陆测试用例 2 1 功能角度 2 2 非功能需求维度
  • 同学,DBDiff了解一下

    DBDiff是一款自动化的数据库schema和数据对比工具 它可以比较两个数据库 支持本地 远程库 并自动生成差异报告 数据库Schema代表数据库中的数据结构 包括表 视图 索引 序列 存储过程等 在设计数据库Schema时需要考虑各种数
  • Hyperledger fabric: 使用dev模式调试链码(chaincode)

    fabric的链码开发是比较痛苦的 主要是调试起来特别繁琐 在不使用dev模式的情况下 写好chaincode之后不能在本地测试 必须将代码部署到docker 然后再install instantiate 这样peer节点会在新的容器中启动
  • RabbitMQ:hello结构

    1 在Linux环境上面装入rabbitMQ doker compose yml version 3 1 services rabbitmq image daocloud io library rabbitmq management res
  • Youtube扒视频+ffmpeg批量将 png图像转换为avi、MP4以及将avi、MP4转换为单帧图像

    Youtube扒视频 ffmpeg批量将 png图像转换为avi MP4以及将avi MP4转换为单帧图像 最近有科研需求 需要去youtube上扒视频来制作数据集 遇到了如何将avi及mp4转换为png 以及 将png图像转换为视频的操作
  • 螺旋打印矩阵 -- C语言

    需求 给定一个包含 m x n 个元素的矩阵 m 行 n 列 请按照顺时针螺旋顺序 返回矩阵中的所有元素 示例 1 输入 1 2 3 4 5 6 7 8 9 输出 1 2 3 6 9 8 7 4 5 示例 2 输入 1 2 3 4 5 6
  • Servlet获取Excel中数据的两种方式

    Servlet解析Excel文件的两种方式 简单分享一下Servlet通过解析Excel文件得到其中数据的两种方式 第一种 前端获取 思路 通过layui的第三方插件 layui excel 解析excel文件 得到数据 再通过Ajax传递
  • Executors的四种线程池

    1 Executors有四种线程池的实现方式 newSingleThreadExecutor 创建一个单线程化的线程池 它只会用唯一的工作线程来执行任务 保证所有任务按照指定顺序 FIFO LIFO 优先级 执行 newFixedThrea
  • 解读:新基建为区块链带来的新机遇

    导读 区块链作为融合点对点传输 共识机制 加密算法等技术的分布式数据库技术 目前已渗透到数字金融 供应链管理 数字资产交易等多个领域 2019年10月 中共中央政治局集体学习区块链技术发展现状及趋势 2020年3月4日 中共中央政治局常务委
  • Java 【数据结构OJ题十道】—— 二叉树篇1

    文章目录 一 检查两棵二叉树是否相同 二 另一棵二叉树的子树 三 二叉树的构建及遍历 四 序列化二叉树和反序列化二叉树 难 五 二叉树创建字符串 六 二叉树前序非递归遍历实现 七 二叉树中序非递归遍历实现 八 二叉树后序非递归遍历实现 九
  • C规范编辑笔记(十二)

    往期文章 C规范编辑笔记 一 C规范编辑笔记 二 C规范编辑笔记 三 C规范编辑笔记 四 C规范编辑笔记 五 C规范编辑笔记 六 C规范编辑笔记 七 C规范编辑笔记 八 C规范编辑笔记 九 C规则编辑笔记 十 C规范编辑笔记 十一 正文 放
  • 【概率论】非连续型随机变量及概率分布

    非离散型随机变量 非离散型分布函数 设是一个随机变量 是任意实数 随机变量的分布函数 如果已知X的分布函数F x 就可以求出X落在任一区间 x1 x2 内的概率 分布函数的性质 1 2 是单调不减的 3 一维连续型随机变量概率密度 非负函数
  • 书写自己的成长情况介绍,要尽可能详尽并富有文采

    我从小生活在一个富有文化气息的家庭 父母给我最大的支持和关爱 让我拥有了一个美好的成长环境 从小我就喜欢读书 探索世界 这种兴趣也从未改变 反而越来越深入 我以优异的成绩在学校取得了卓越的成绩 学习技能不断增长 积累了丰富的知识 在大学期间
  • ipad怎么分屏方法

    如果你喜欢用Pad追剧 但是同时你又要做一些其他的事情 这个时候我们就需要ipad分屏 那具体怎么做呢 下面让我们一起来看一下吧 小白一键重装系统官网 让电脑小白也会用的win11 win10 win7一键重装系统软件 工具 原料 系统版本
  • h5手机端video autoplay兼容苹果的做法

    1 主要是加入 x5 video player fullscreen true x5 playsinline playsinline webkit playsinline 这几个属性 2 如果需要微信中支持 只能引入wx的js 在 必须在w
  • powerdesigner创建mysql数据库表_使用PowerDesigner创建表并导入到数据库

    使用PowerDesigner创建表并导入到数据库 刚刚学习使用PowerDesigner进行数据库的创建 下面我就分享一下如何创建表并导入到数据库 1 首先到网上下载一下PowerDesigner SQL Service 2008软件并安
  • vue-grid-layout 使用以及所有属性

    vue grid layout 作用 下载及引入 版本 案例 以及所有属性 作用 1 实现桌面拖拽布局功能 2 可调整每个部件的大小 3 可以在不重新构建网格的情况下添加或删除小部件 下载及引入 下载 install with npm 用n
  • Ant design vue 的table实现点击字段,直接在表格编辑功能(举个栗子)

    大概需求 就点击table上某列的字段 然后即可在table上编辑数据 数据失去焦点后即可触发保存的事件 关于无关紧要的代码 你可以不看 因为灭有用 看重点代码 1 table中添加插槽名字如 栗子 重点位置 scopedSlots cus
  • Qt信号槽的两种写法

    Qt信号槽connect是什么 connect 函数的形式 connect sender signal receiver slot type 参数示意 sender 发出信号的对象 signal 发送对象发出的信号 receiver 要接收
  • Sort List

    Merge Sort 链表的merge Sort 就是 找中间结点 算法 merge sorted List 算法 1 快慢指针法定位到中间结点p 从p前面断开 维护prev p是后半部分链表头 得到两个子链表 2 分别递归merge两个子