stdlib的qsort是递归的吗?

2023-11-24

我读过qsort只是一种通用排序,不承诺实施。我不知道库在不同平台上有何不同,但假设 Mac OS X 和 Linux 实现大致相似,are the qsort递归实现和/或需要大量堆栈?

我有一个大数组(数十万个元素),我想对它进行排序,而不会把我的堆栈彻底遗忘。或者,对于大型数组的等效项有什么建议吗?


这是来自 BSD 的版本,版权归 Apple,大概在某个时候在 OS X 中使用过:

http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/kern/qsort.c

正如 Blindy 解释的那样,它是调用递归的,尽管递归深度的上限很小。

这是 glibc 的一个版本,大概在某个时候在 Linux 系统中使用过:

http://www.umcs.maine.edu/~chaw/200801/capstone/n/qsort.c

It's not调用递归。出于完全相同的原因,调用递归的限制很小,它可以使用少量固定数量的堆栈来管理其循环递归。

我可以费心查找最新版本吗?没有 ;-)

对于几十万个数组元素,即使调用递归实现也不会调用超过 20 层深度。从宏伟的计划来看,这并不深入,除了非常有限的嵌入式设备,这些设备没有足够的内存让您首先拥有这么大的数组进行排序。当 N 有界以上时,O(log N) 显然是constant,但更重要的是,它通常是一个相当易于管理的常数。通常32或64倍“小”就是“合理”。

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

stdlib的qsort是递归的吗? 的相关文章

随机推荐

  • 如何在 Excel VBA 中使用 .NET 对象?

    VBA 代码可以实例化和使用 NET 对象吗 我感兴趣的具体类是 System IO Compression GZipStream For InfoGAC 是 NET 全局程序集缓存 我认为 Andy 明确了这个答案 但我不确定有关 CLR
  • Java:使用整数常量声明枚举时遇到问题

    呃 我对 Java 中枚举的工作原理有点困惑 在 C 和 C 我通常使用的 中 这似乎没问题 但 Java 想要生我的气 gt gt enum Direction NORTH WEST 0x0C NORTH 0x10 NORTH EAST
  • 如何查询 pthread 以查看它是否仍在运行?

    在我的析构函数中 我想干净地销毁线程 我的目标是等待线程完成执行 然后销毁该线程 我发现查询 pthread 状态的唯一内容是pthread attr setdetachstate但这只能告诉您您的线程是否是 PTHREAD CREATE
  • 哪些浏览器在缓存 XMLHTTPRequest 响应时存在问题?

    当前流行的浏览器在缓存 XMLHttpRequest 响应时是否存在我需要注意的特殊问题 我希望能够在每个页面上包含 XMLHttpRequest 查询 作为动态加载与页面类型相关的内容 即 JSON 或行为 如 eval ed Javas
  • 如何在向下和向上滚动时触发CSS动画

    我在一个项目中使用了多个 CSS 动画 我的问题是这些动画在向下滚动时仅触发一次 我需要每次用户滚动它们时触发它们 无论是向上还是向下页面 CSS slideRight animation name slideRight webkit an
  • 从数学表达式创建二叉树

    我有这样的表情 2 8 8 5 5 2 Or 2 1 1 我想在其中制作一棵二叉树 2 1 1 我怎样才能制作这个二叉树 我有一个类似的项目 我是这样做的 对字符串进行标记 看看每个符号是什么 例如 该列表可能包含 Open paranth
  • 从 Asp.net MVC 发送 HTML 电子邮件的最佳方式是什么?

    我希望能够渲染视图并将其作为电子邮件发送 类似于使用 Ruby on Rails 所做的事情 做这个的最好方式是什么 编辑 到目前为止 我的解决方案是使用模板引擎 NHaml StringTemplate net 它可以工作 但我不希望在我
  • 如何通过 routerLink 指令指定查询参数

    我正在试验新的路由器 版本 3 0 0 alpha 7 想知道如何通过 routerLink 指令指定查询参数 下面的 Router navigate 方法生成一个类似的 URLhttp localhost 3000 component a
  • JavaScript 不兼容/不一致 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我打算在几周内做一个演示
  • Laravel 4 中出现“找不到类 HTML”错误

    在 Laravel 4 又名 Illuminate 中开发一个新项目 我试图在我的样式表中创建链接master blade php模板如下 HTML style css style css 但这会引发错误 指出未找到 HTML 类 它是否在
  • 使用 ActionScript 3 在 Flash 中排列对象的 (z) 顺序?

    是否可以使用 ActionScript 3 在 Flash 中排列对象的 z 顺序 例如我在给定图层上有 3 个符号实例 并且我想要执行相当于 置于前面 置于前面 和 或瞄准某个 z 位置的操作 您可以使用这样的动作脚本更改同一层内影片剪辑
  • 显示 YouTube 视频时 Webview 崩溃

    更新到 8 0 后 我们遇到了迄今为 止从未见过的崩溃 java lang NullPointerException Attempt to invoke virtual method int android graphics Bitmap
  • java web 服务客户端中的连接详细信息和超时

    我必须为给定的 WSDL 文件实现一个 Web 服务客户端 我使用 SDK 的 wsimport 工具从 WSDL 创建 Java 类以及包装 Web 服务唯一方法的类 enhanceAddress auth param address 转
  • 确定两个日期范围是否重叠

    给定两个日期范围 确定两个日期范围是否重叠的最简单或最有效的方法是什么 例如 假设我们有由 DateTime 变量表示的范围StartDate1 to EndDate1 and StartDate2 to EndDate2 StartA S
  • AWS Linux 服务器安装 R 包

    I try to install the package data table and aws s3 via Rstudio Server on an Amazon Linux instance following this guide h
  • 如何在 RMarkdown 文档(PDF、HTML)中排列 HTML 小部件

    我在一个R笔记本并希望使用它来创建两个输出 HTML 文档和 PDF 文档 我的分析包括传单地图 html 小部件 即当我将笔记本编织到 PDF 文档时出现问题 感谢webshot功能现在包含在knitr包 knitr 将尝试使用 webs
  • 如何识别生成器与列表理解

    我有这个 gt gt gt sum i i for i in xrange 5 我的问题是 在这种情况下我是传递列表理解还是生成器对象合计 我该怎么说呢 这有一般规则吗 还记得sum 本身需要一对括号来包围它的参数 我认为上面的括号是为了求
  • JUnit 5 测试用例未执行

    我在 NetBeans 8 2 中的一个新的干净 Maven 项目中创建了此测试 import static org junit jupiter api Assertions fail import org junit jupiter ap
  • 无法在 Mac 上运行“keyboard.is_pressed”

    我试图制作一个脚本 每次按 x 时 它都会打印 y 当我运行代码时 import keyboard if keyboard is pressed x print y 控制台输出 raise OSError Error 13 Must be
  • stdlib的qsort是递归的吗?

    我读过qsort只是一种通用排序 不承诺实施 我不知道库在不同平台上有何不同 但假设 Mac OS X 和 Linux 实现大致相似 are the qsort递归实现和 或需要大量堆栈 我有一个大数组 数十万个元素 我想对它进行排序 而不