基数排序:LSD 与 MSD 版本

2024-02-04

这本书《算法导论》 http://mitpress.mit.edu/algorithms/提到了基数排序的 LSD(最低有效数字)版本。然而,正如其他人在 stackoverflow 中指出的那样,还存在 MSD(最高有效数字)版本。所以我想知道每一个的优点和缺点。我的猜测是 LSD 版本比 MSD 版本有一些好处,但我不确定。因此就有了这个问题。


取自链接,可能有用:http://www.eternallyconfuzzled.com/tuts/algorithms/jsw_tut_sorting.aspx http://www.eternallyconfuzzled.com/tuts/algorithms/jsw_tut_sorting.aspx(在最底部)

LSD 基数排序的最大问题是它从差异最小的数字开始。如果我们可以从最高有效数字开始,那么第一遍将对整个范围进行排序大有帮助,而之后的每遍都将简单地处理细节。 MSD基数排序的思想是将所有具有相等值的数字划分到各自的桶中,然后对所有桶执行相同的操作,直到数组排序完毕。当然,这表明了一种递归算法,但这也意味着我们现在可以对可变长度的项目进行排序,并且我们不必接触所有数字来获得排序的数组。这使得 MSD 基数排序变得更快、更有用。

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

基数排序:LSD 与 MSD 版本 的相关文章

  • 如何计算两个ip之间的主机数量? C#

    我有两个ip 1 1 1 1 1 2 4 4 4 4 显然这只是一个例子 这是一个动态计算器 如果子网掩码不相关 我如何计算所述 ip 之间的主机数量 要计算 理论 IP 地址的数量 您需要将每个 IP 地址转换为其 32 位整数格式 这实
  • 哪种数据聚类算法适合检测时间序列事件中未知数量的聚类?

    这是我的场景 考虑在不同地点和时间发生的一组事件 例如 考虑有人在高空记录暴风雨期间城市中的雷击 就我的目的而言 闪电是瞬时的 只能击中某些位置 例如高层建筑 还可以想象每次雷击都有一个唯一的 ID 以便以后可以参考该雷击 这个城市大约有1
  • 反转二进制网络

    如何反转二元方程 以便找到哪些输入将产生给定的输出 Example Inputs i0 through i8 Outputs o0 through o8 Operators XOR AND 二元方程 1 i0 1 i1 0 i2 1 i3
  • 按字母顺序对对象的 ArrayList 进行排序

    我必须创建一个方法来排序数组列表根据电子邮件按字母顺序排列对象 然后打印排序后的数组 我在排序时遇到麻烦的部分 我已经研究过并尝试使用Collections sort vehiclearray 但这对我不起作用 我是因为我需要一个叫做比较器
  • 按百分比减少多边形面积

    我有一个由点 x y 组成的多边形 我想做的是将其减少一个百分比 请记住 我不想只是扩大规模 多边形应该有一种内部边界 其宽度取决于百分比 该内部边界被多边形切断 谁知道可以实现这一目标的算法 输入 点数组 百分比 输出 点数组 你所寻求的
  • 使用快速排序查找数组中第 k 个最小的项 => 预期运行时间?

    如果我使用快速排序的修改版本来查找数组中第 k 个最小的项目 为什么预期运行时间是 O n 如 Programming Pearls 一书中所述 我正在使用的算法执行以下操作 1 Runs quick sort on the array 2
  • 搜索/排序算法 - 是否有类似 GoF 的列表?

    我是一名自学成才的开发人员 坦率地说 我不太擅长找出在任何特定情况下使用哪种搜索或排序算法 我只是想知道是否有设计模式 esque 列出了以太坊中可用的常见算法 供我添加书签 就像是 算法名称 带有别名 如果有的话 它解决的问题 大O成本
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • 字符串到数组,按第三个字/列排序

    我有一个包含数字 单词和换行符的字符串 我将其拆分为一个数组 如果我跑Array Sort lines 它将按第 1 列对数组进行数字排序 Number 我怎样才能按第 3 列的字母顺序对数组进行排序 Color 注意 它们不是真正的列 只
  • 使用FFT算法计算

    给定在平面上的点 1 0 2 0 n 0 上发现的一组 n 个粒子电荷载流子 在 i 0 点发现的粒子电荷记为 Qi 作用在粒子上的力由以下公式给出 C is a Coulomb s constant 给出一个算法来计算 Fi 对于总复杂度
  • 从日志文件中获取前 100 个 URL

    我的一位朋友在接受采访时被问到以下问题 谁能告诉我如何解决它 我们有一个相当大的日志文件 大约 5GB 日志文件的每一行都包含一个用户在我们网站上访问过的 URL 我们想要找出用户访问最多的 100 个 URL 怎么做 如果我们有超过 10
  • 如何求解:T(n) = T(n - 1) + n

    我已经解决了以下问题 T n T n 1 n O n 2 现在 当我解决这个问题时 我发现界限非常松散 我是否做错了什么 或者只是这样 您还需要一个递归关系的基本情况 T 1 c T n T n 1 n 为了解决这个问题 您可以首先猜测一个
  • 如何高效地在屏幕上精确绘制N个点?

    这听起来是一个简单的问题 但我发现要获得良好的性能是非常棘手的 我提出的第一个算法是随机绘制点 从一组中检查是否已绘制 否则绘制 如果我们只绘制几个点 那么这种方法效果很好 但当我们接近填满屏幕时 速度会灾难性地减慢 我想出的最好的方法是构
  • 如何使用 SQL Server 查询对“版本号”列进行排序

    我想知道我们当中的 SQL 天才是否可以向我伸出援助之手 我有一个专栏VersionNo在表中Versions包含 版本号 值 例如 VersionNo 1 2 3 1 1 10 3 1 1 4 7 2 etc 我正在寻找对此进行排序 但不
  • 图中的后边

    I m having a hard time understanding Tarjan s algorithm for articulation points I m currently following this tutorial he
  • 按日期对图表中的 X 轴进行排序 - JavaFX

    如何按日期对折线图 X 轴进行排序 现在我的折线图看起来像这样 我试图剪切日期并将其转换为 int 但现在我不知道该怎么办 datesToCompare addAll LastHoursAndDates keySet dates in St
  • 我需要一个支持高效随机访问和 O(k) 插入和删除的容器

    我再次尝试问同样的问题question https stackoverflow com questions 3808708 delete parts of a dynamic array and grow other 但我最终提出了一个不同
  • 找到一系列间隔的最有效分组

    我有一个应用程序 其中有一系列不重叠的固定宽度间隔 每个间隔都有一个给定的键 每个间隔具有相同的宽度 并且可以存在连续的间隔 本质上 我想以最小化单独间隔的数量的方式对间隔和键进行分组 这可以通过合并具有相同键的连续间隔或查找匹配间隔并将它
  • 解释一下从 N 个给定集合中的每一个中给出第 K 个最大数字的示例?

    今天我尝试解决一个Facebook 编程挑战赛 https facebook interviewstreet com recruit challenges 我遇到的挑战是 酒吧问题 可以找到here https github com alo
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A

随机推荐

  • 如何在XAML中创建类的实例?

    我想创建没有可视元素的简单实用程序类 并在 XAML 中创建它 以便我可以定义数据绑定 我尝试创建派生类DependencyObject并创建它Window Resources部分 但它不调用任何构造函数 您可以在 app xaml 中实例
  • strcpy() 中的分段错误

    我有这样的基本结构 typedef struct struck char id char mat int value char place Truck 像这样的函数创建该结构的新 实例 Truck CTruck char id char m
  • 在 Eclipse 中调试。在断点之间移动

    我正在 Eclipse 中调试 JAVA 代码 假设迭代循环内有 2 个断点 如何直接进入断点 同时在每次迭代时跳过其余代码 按 F8 这也是Resume按钮 这将带你到断点 从那里使用 F6 调试每一行 如果您想转到下一个断点 请按 F8
  • Apollo graphQL 中 useQuery 和 useLazyQuery 有什么区别?

    我正在浏览 Apollo React hooks 的文档 并看到有两个查询钩子可供使用 其中是useQuery and useLazyQuery 我正在读这一页 https www apollographql com docs react
  • 当在字符串中按下 QpushButton 时,如何在 QlineEdit 中获取文本?

    我正在尝试实现一个功能 我的代码如下 当用户单击名为 connect 的按钮时 我想在 shost 字符串中获取带有对象名 host 的 lineedit 中的文本 我怎样才能做到这一点 我尝试过但失败了 我该如何实现这个功能呢 impor
  • JavaScript - 挂钩对所有“点击”事件的一些检查

    因此 我有一个附加到几个按钮的常规 onclick 事件 处理 onclick 事件的每个函数都会执行不同的操作 因此我不能为这两个事件重用相同的函数 element1 onclick function if this classList
  • 系统中发现硒元素,但 Jenkins 中未发现

    我和我的团队最近开始使用 Selenium Web Driver 和 JUnit 开发自动化脚本 我面临一个问题 而且我真的不知道如何继续 任何建议都会有用 问题是 我有一个页面 在其中我以表单形式上传两个 Excel 然后按提交按钮确认上
  • ngx-datatable 页脚自定义

    如何自定义 ngx 数据表 我无法找到必须更改代码以删除记录总数并将其替换为下拉列表以显示每页项目的位置 我的分页也缺少一些图标 使用自定义页脚模板 请参阅下面的链接 所以它会覆盖默认的页脚 https github com swimlan
  • 如何使用 JQuery 按一个类查找元素,但排除其他元素

    我有多个元素 其中有一个类 li class target class exclude class li li class target class exclude class li li class target class li li
  • 当关闭文件方法抛出 IOException 时如何管理事务(包括文件 IO)

    我最近开始使用 Spring 的数据源事务管理器 我现在有问题 我的事务包括对数据库表的更新和对文件的写入操作 它工作正常 但我对文件 I O 有一些疑问 如下所示 我已将 bean 的 openFile 和 closeFile 方法分别配
  • sin(x) 对于 GLSL 片段着色器、Intel HD4000 上的中等大输入仅返回 4 个不同的值

    我有一个用 GLSL 编写的简单 OpenGL 3 3 片段着色器 本质上 我正在评估sin x 对于中等大的 x 10 000 到 2 000 000 之间 如下所示 version 330 out vec4 fColor void ma
  • 使用 SBT 在损坏的项目中运行测试

    在 Java Eclipse 项目中进行认真的重构时 我经常会破坏构建 但专注于一次通过一个测试 运行测试时 Eclipse 会警告该项目无法编译 但它仍然会运行它可以编译的测试 现在我正在使用 SBT 并希望通过 仅测试 实现相同的目标
  • 使用 Apple 登录 = invalid_client

    我面临着一个非常糟糕的问题 因为我阅读了很多指南和教程 但没有任何效果 结果总是一样的 error invalid client 我得到了代码 身份令牌和我需要的一切 除了调用https appleid apple com auth tok
  • FirebaseListAdapter.startListening() 中的错误

    您好 我的 Firebase 有问题 当我调试我的应用程序时出现错误 java lang NullPointerException 尝试在空对象引用上调用虚拟方法 void com firebase ui database Firebase
  • 计算数组中字符串的实例数

    我在 jQuery 中有一个数组 我需要计算该数组中 true 字符串的数量 然后使 numOfTrue 变量等于 true 字符串的数量 因此 在下面的数组中 有 2 个 true 字符串 因此 numOfTrue 将等于 2 var n
  • 如何使用jquery将插入符后的连续数字转换为上标?

    这个问题与如何使用jquery将插入符号后的数字转换为上标 https stackoverflow com questions 14813023 how to convert numbers after caret to superscri
  • 将 Blob 对象保存为服务器上的文件

    使用名为cropper 的jQuery 插件 我能够将裁剪后的图像作为blob 对象检索 现在我需要将此 blob 对象保存为服务器上的文件 其代码是 image cropper getCroppedCanvas toBlob functi
  • iOS RestKit 日期解析

    在一个旧的 iOS 项目中 我必须解析以下格式的日期dd MM yyyy所以我将这些行放入 AppDelegate 的静态方法中 它按预期工作 Set the Dateformatter for the Dates returned by
  • Firebase CLI:“功能:警告!在 PACKAGE.JSON 中找不到引擎字段。默认为节点 6 运行时。”

    我将 Firebase CLI 升级到版本 6 8 0 现在 当我部署函数时 我收到一条警告消息 如下所示 功能 警告 PACKAGE JSON 中未找到引擎字段 默认为节点 6 运行时 从 2019 年 6 月 1 日开始 如果 pack
  • 基数排序:LSD 与 MSD 版本

    这本书 算法导论 http mitpress mit edu algorithms 提到了基数排序的 LSD 最低有效数字 版本 然而 正如其他人在 stackoverflow 中指出的那样 还存在 MSD 最高有效数字 版本 所以我想知道