为什么快速排序比基数排序更流行?

2023-12-20

为什么快速排序(或介绍排序)或任何基于比较的排序算法比基数排序更常见?特别是对于数字排序。

基数排序不是基于比较的,因此可能比 O(n日志)。其实还可以n),其中 k 是用于表示每个项目的位数。并且内存开销并不重要,因为您可以选择要使用的存储桶的数量,并且所需的内存可能小于合并排序的要求。

和缓存有关系吗?或者也许访问数组中整数的随机字节?


我想到了两个论点:

  1. Quicksort/Introsort 更灵活:

    Quicksort 和 Introsort 可以很好地处理所有类型的数据。排序所需的只是比较项目的可能性。这对于数字来说很简单,但您也可以对其他数据进行排序。

    另一方面,基数排序只是按二进制表示形式对事物进行排序。它从不将项目相互比较。

  2. 基数排序需要更多内存。

    我见过的所有基数排序实现都使用辅助缓冲区来存储部分排序结果。这增加了排序算法的内存需求。如果您只对几千字节进行排序,这可能不是问题,但如果您对千兆字节范围进行排序,则会产生巨大的差异。

    如果我没记错的话,纸上存在一个就地基数排序算法。

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

为什么快速排序比基数排序更流行? 的相关文章

随机推荐

  • 自动确定图例的位置

    您可以在大多数绘图程序中手动定位关键图例 例如 在 gnuplot 中 它是使用set key top right 在ggplot2中 就完成了像这样 https stackoverflow com questions 2954005 ho
  • 我是否在 RHEL 上正确安装了 Ruby 1.9.3?

    在你说之前yum y install ruby193 我就是这么做的 请注意 我不是 Ruby 开发人员 但需要将此程序作为其他开发人员通过 Web 服务工作的一部分 他没空 任何帮助将不胜感激 我尝试按照说明安装库并得到 root ctb
  • JQuery 检测底部滚动

    我希望在用户滚动到页面底部时实现内容加载 我遇到问题了 它在桌面浏览器上运行良好 但在移动设备上则不然 我已经实施了一个肮脏的修复程序 使其可以在 iPhone 上运行 但并不是最佳的 因为它无法在其他尺寸的移动设备上运行 我的网站是 ww
  • 返回组的第一行

    我有一个数据框 其中包含ID 这对于组中的每个元素 两个日期时间以及这两个时间间隔都是相同的 日期时间对象之一是我的相关时间标记 现在我想获取数据帧的子集 其中包含每个组的最早条目 条目 尤其是时间间隔 需要保持不变 我的第一个方法是根据
  • git 和本地修改

    我正在探索如何使用 git 我刚刚做了以下测试 创建一个文件夹和2个文件 然后 git init git add git commit m 初始提交 创建分支 gitbranchexperimental gitcheckoutexperim
  • 在 ActiveRecord 中存储序列化哈希与键/值数据库对象的优缺点?

    如果我有几个对象 每个对象基本上都有一个Profile 我用什么来存储随机属性 有什么优点和缺点 将序列化哈希存储在记录的列中 与将序列化哈希存储在记录的列中不同 存储一堆键 值对象belong to主要对象 Code 假设您有如下 STI
  • Gorilla Mux 正则表达式

    我使用的是 Mux 包Golang 大猩猩工具包 http www gorillatoolkit org pkg mux对于我的路线 考虑以下路线 m HandleFunc admin install installHandler Meth
  • 如何删除 CSV 文件中的顶行(列标题)?

    我已经编写了一个脚本 该脚本将上传 CSV 文件 然后将数据提取到已制作的表中 我想让它的第一行 列标题 不会被插入到表中 但其余的数据会被插入到表中 fp fopen SESSION filename r while data fgetc
  • 我们将这种类型的参数传递 mul(1)(2)(3) 称为什么?如何解决这个问题以及如何解决这样的情况,如果像这样传递 n 个参数[重复]

    这个问题在这里已经有答案了 我们将这种类型的参数传递 mul 1 2 3 称为什么 如何解决这个问题 以及在像这样传递 n 个参数的情况下如何解决这种情况 我想了解这个概念是如何运作的 它被称为currying https en wikip
  • Hibernate Criteria 查询 - 嵌套条件

    我不知道如何使用 Hibernate Criteria Syntax 创建这样的查询 select from x where x a abc and x b def or x b ghi 您知道如何做到这一点吗 我正在使用 Hibernat
  • 获取 \p{L}+ 来匹配字符串[重复]

    这个问题在这里已经有答案了 我已经用头撞墙一个小时左右了 现在正在尝试我能想到的一切方法来让 p L 匹配 javascript 中的字符串 下面每次都返回 false 我不知道为什么 它可以在我的本地正则表达式测试器中运行 也可以在 re
  • 提高 WPF DataGrid 性能

    In my NET 3 5 WPF申请 我有一个WPF DataGrid其中将填充 500 列和 50 行 应用程序的性能在滚动时非常非常差 或者当我滚动时DataGrid Items Refresh 或在选择行时 实际上应用程序将需要大约
  • .net异步套接字超时检查线程安全

    http msdn microsoft com en us library system net sockets socketasynceventargs aspx http msdn microsoft com en us library
  • 重命名 ng-include 中的变量[重复]

    这个问题在这里已经有答案了 这是相关的html
  • 为什么我的 iOS 应用程序不禁用深色模式?

    所以 我尝试根据苹果文档将我的应用程序设置为通过强制浅色模式来禁用iOS 13深色模式 在模拟器中所有尝试都工作正常 但是当我在真实设备上尝试时 没有任何反应 就像我 我从未改变过我的代码 第一次尝试 覆盖窗口 视图或视图控制器的界面样式
  • 使用 Qt-Designer 自动扩展布局

    我正在使用 Qt 设计器 我想创建一个QVBoxLayout它将自动扩展以填充整个窗口 的布局QVBoxLayout保持固定 我怎样才能导致QVBoxLayout通过设计器扩大并充满整个窗口 创建您的后QVBoxLayout在 Qt Des
  • Latex - 提取子字符串/忽略字符

    我有以下问题 我定义了一个宏 func如下 newcommand func 1 do something with 1 X 1 Y 我现在想定义另一个宏 newcommand MyFunc 1 parse 1 and if it conta
  • 如何在 d3.js 转换中正确更新输入元素的文本值

    我一直在尝试 一步一步 转换一些非常好的但静态的和非 d3code https github com saebekassebil teoria tree master examples用于 d3 js 可视化中的动态动画 虽然与这个问题没有
  • 避免竞争条件?操作员

    是否 可用于调用委托或事件的运算符避免竞争条件 例如 手动避免竞争条件 The event invoking method that derived classes can override protected virtual void O
  • 为什么快速排序比基数排序更流行?

    为什么快速排序 或介绍排序 或任何基于比较的排序算法比基数排序更常见 特别是对于数字排序 基数排序不是基于比较的 因此可能比 O n日志 其实还可以n 其中 k 是用于表示每个项目的位数 并且内存开销并不重要 因为您可以选择要使用的存储桶的