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

2023-12-20

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

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

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


我想到了两个论点:

  1. Quicksort/Introsort 更灵活:

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

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

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

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

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

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

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

  • 使用排序函数按 NSDates 对数组进行排序[重复]

    这个问题在这里已经有答案了 我有一个名为的模型类Event import Foundation import MapKit public class Event let id Int var title String let status
  • 如何在 XSLT 中应用字母数字排序

    根据以下 XML 在 XSL 中实现字母数字排序的最佳方法是什么 Edit 澄清一下 下面的 XML 只是一个简单的示例 真正的 XML 将包含更多的变体值 使用将标签文本拆分为文本和数字部分substring before and sub
  • 对 pandas 系列进行排序

    我试图弄清楚如何以智能方式对 groupby 聚合生成的系列进行排序 我生成 DataFrame 的聚合 如下所示 means df testColumn groupby df testCategory mean 这产生了一个系列 我现在尝
  • 在 JavaScript 中按值对字典进行排序

    这是我的字典 const dict x 1 y 6 z 9 a 5 b 7 c 11 d 17 t 3 我需要一种方法来排序我的dict字典从最小到最大或从最大到最小 或者即使我有一个包含排序键的数组也很好 但我不知道如何使用来做这样的事情
  • 快速排序优化

    我正在学习排序算法 下一步 我试图让我的实现接近std sort 到目前为止我还很远 我有 3 个快速排序的实现 标准快速排序 使用临时数组 quicksort with following optimizations median3 用于
  • 按元素出现的频率对数组元素进行排序

    是否可以在 matlab octave 中使用sort函数根据元素的相对频率对数组进行排序 例如数组 m 4 4 4 10 10 10 4 4 5 应该产生这个数组 5 10 10 10 4 4 4 4 4 5是出现频率较低的元素 位于顶部
  • 根据键对字典进行排序

    我有一本 C 字典 比如 Dictionary
  • php 排序比 mysql“order by”更好吗?

    我想知道 就性能而言 并考虑在具有非常非常多 gt 1 000 000 记录的表上进行mysql选择 使用sql order by 对结果进行排序或在查询后使用经典编程排序对结果进行排序是否更好算法 有人有什么建议吗 Tanks mySQL
  • 基数首先排序最重要的还是最不重要的,哪个更快?

    我一直在研究基数排序实现 到目前为止粘贴在下面的代码 代码是用 Java 编写的 但在 C C 中应该也能正常工作 正如您从实现中看到的 我首先执行最高有效位 即整数的第 31 位 这似乎更快 因为一旦子组完成 就不再需要迭代 例如 打个比
  • 数组中的重复元素[重复]

    这个问题在这里已经有答案了 这有点与this https stackoverflow com questions 2605766 how to find a duplicate element in an array of shuffled
  • python中的递归插入排序

    我正在尝试用 python 编写所有排序算法的迭代和递归版本 除了我没有退回任何东西之外 这还有什么问题吗 是我切片的问题吗 尝试解决 def insertOne element aList Inserts element into its
  • 当 docvalues=true 时,小写过滤器工厂不起作用

    我正在尝试使用 Solr 实现不区分大小写的排序并面临这个问题 https stackoverflow com questions 31745713 solr case insensitive sort not working Copied
  • 如何对 glob.glob 进行数字排序?

    我在一个文件夹中有一堆按数字排序的文件 当我尝试对 glob glob 进行排序时 我从来没有以正确的顺序获得文件 文件示例和预期输出排序 folder C Users user Desktop folder 1 sample mp3 C
  • 对给定预定义顺序的字符串列表进行排序

    我有一系列颜色 我想按顺序排序 但是 我不想使用它们的 自然 顺序对它们进行排序 而是让它们保持以下顺序 var order white yellow violet blue orange red maroon brown black 例如
  • 快速排序应用程序中这些交换代码行的目的是什么?

    我试图理解快速排序的实现或应用程序以找到第 k 个最小元素 这是我试图理解的代码 public int quicksort int a int start int end int k if start lt end int pivot pa
  • 如何在不加载到内存的情况下对大型 csv 文件进行排序

    我有 20GB csv 文件 如下所示 CallId MessageNo Information Number 1000 1 a 2 99 2 bs 3 1000 3 g 4 66 2 a 3 20 16 3 b 1000 7 c 4 99
  • 如何在字符串中的某个字符之后按字母顺序对 php 数组进行排序

    我有两个 php 数组 对于每个数组都有一个不同的排序问题 1 首先包含域列表 values 0 absd com values 1 bfhgj org values 2 sdfgh net values 3 sdff com values
  • javascript中的父子关系排序

    我有以下结构 category id 1 parent category null category id 2 parent category 1 category id 3 parent category 1 category id 4
  • 在 C# 中对由整数组成的多维 [] 数组进行排序

    我有以下数组 private int testSamples new testSamples 101 101 它应该代表一个名册 第0到100列 第0到100行 在这个名册中 掉落了各种化学液体 我为之做这件事的人希望以这样的方式工作 他可
  • Highcharts 对堆积条形图进行排序

    我没有看到任何与我在 Highcharts 中遇到的确切场景相匹配的解决方案 因此我将我的发现发布在这里 我在 Highcharts 中有一个堆积条形图 需要按值从大到小对条形图进行排序并维护它们的类别关系 通常 首选解决方案是在将数据发送

随机推荐

  • 自动确定图例的位置

    您可以在大多数绘图程序中手动定位关键图例 例如 在 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 是用于表示每个项目的位数 并且内存开销并不重要 因为您可以选择要使用的存储桶的