我正在阅读Engineering a Sort Function(pg-1254),其中JON L. BENTLEY& M. DOUGLAS McILROY讨论了两种成本模型
MIX:overhead = comparearisons<互换
qsort:开销<交换<比较
(page no-1254 of Engineering a Sort Function)
任何人都可以解释为什么除了字符串情况之外,为什么比较在第二个模型中成本太高? 如果比较真的太昂贵,那么为什么我们不使用“自下而上的堆”?
根据维基百科,
答案 0 :(得分:0)
比较费用昂贵的原因在下一句话中:
第二个模型反映了
qsort
接口的一般性,其中比较是a 功能,而不是机器原语。
字符串也是如此。事实上,对于字符串尤其如此,因为比较两个字符串涉及函数调用,指针间接(再见引用的局部性)和走两个字符串,做min( m , n < / em>)字节比较,其中 m , n 是字符串的长度。
如果比较真的太贵了,为什么我们不使用“自下而上”?
你应该问作者。
答案 1 :(得分:0)
当间接访问密钥(通过指针数组或类似代码)时,交换的成本与参考信息的大小有关;比较的成本总是与密钥的大小有关。因此,交换的成本可以忽略不计。