【问题标题】:Engineering a Sort Function设计一个排序函数
【发布时间】:2014-02-05 14:32:25
【问题描述】:

我正在阅读 Engineering a Sort Function(pg-1254),其中 JON L. BENTLEY 和 M. DOUGLAS McILROY 讨论了两种成本模型

MIX:开销 = 比较

qsort:开销

(page no-1254 of Engineering a Sort Function)

谁能解释一下为什么在第二个模型中比较成本太高,除了字符串大小写? 如果比较真的太昂贵了,那为什么我们不使用“自下而上的堆排序”呢??

根据维基百科,

It is a variant of Heapsort which is particularly suitable for the sorting of very large amounts of data, if a relatively high cost per compare operation is needed and on average better than Quicksort

【问题讨论】:

  • 请修改您的问题,以便在不阅读链接文章的情况下也能理解它。目前尚不清楚您所说的这些模型是什么,或者“字符串大小写”是什么意思。你的维基百科链接是德语的。

标签: algorithm sorting


【解决方案1】:

比较昂贵的原因在下一句:

第二个模型体现了qsort接口的通用性,其中比较是一个 函数,而不是机器原语。

字符串也是如此。事实上,字符串尤其如此,因为比较两个字符串涉及函数调用、指针间接(再见引用局部性)和遍历两个字符串,执行 min(m, n) 字节比较,其中 m, n 是字符串的长度。

如果比较真的太昂贵,那为什么我们不使用“自下而上的堆排序”?

你应该问作者。

【讨论】:

    【解决方案2】:

    当键被间接访问时(通过指针数组或类似的),交换的成本与引用信息的大小有关;比较的成本总是与密钥的大小有关。所以交换的成本可以忽略不计。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-05
      • 2016-06-02
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 2012-03-06
      • 2012-09-10
      • 2021-07-06
      相关资源
      最近更新 更多