为什么比较是任何合理实施的主要成本?

时间:2014-06-13 18:53:32

标签: algorithm sorting time complexity-theory

我正在阅读有关算法的教科书。教科书说,比较操作是任何合理实施的主要成本。为什么是这样?是什么让它如此缓慢?

1 个答案:

答案 0 :(得分:1)

我猜你习惯了教科书的例子,比如排序整数数组,比较便宜。好吧,欢迎来到现实世界,这里的事情有点复杂。在许多情况下,比较操作不仅仅是一个“if”,它通常是一个相当复杂的回调函数。它首先计算要作为对象函数进行比较的实际密钥。一个简单的例子是独立地比较字符串。在这里,您首先必须规范化每个字符串的大小写。然后你必须逐字符地比较字符串。这是一项很多工作,比交换两个char*要多得多。或者考虑比较树:在一次比较操作中,您可能必须遵循两棵树的许多分支。

即使你有一个比较本身非常简单的数据结构,它总是跟着条件跳转。条件跳转是昂贵的,它们在现代处理器中花费大约15..25个时钟周期,假设硬件不能轻易预测结果。这是一个很长的时间,通常CPU可以在一个时钟周期内完成一次操作。