Big-O计算资源

时间:2015-05-16 15:24:42

标签: algorithm sorting big-o computer-science asymptotic-complexity

我知道测量渐近复杂度可以基于你拥有的任何资源,无论是时间,内存使用,比较次数等等。但是当涉及到排序时,我意识到我们通常将渐近关联起来使用基本操作的符号,例如交换次数/步数或比较次数。

更具体地说,我发现排序算法中的所有 Big-O 都基于比较次数,而不是交换次数(例如,在选择排序中)。所以我们在这里假设比较比排序本身的实际步骤更昂贵?为什么比较如此受欢迎?

在冒泡排序中,如果我们还包括"冒泡"在最糟糕的情况下,上限是否会增加另一个n 2 ?这种增加很多。那么为什么我们在这里忽略它?

如果我错了,请纠正我。感谢。

2 个答案:

答案 0 :(得分:2)

比较是如此重要的一个因素,是因为你总是可以通过指针来存储东西,最坏的情况是最坏的,并且对于任何类型的密钥都可以进行交换。这些简单的系统技巧不适用于比较。按字典顺序比较字符串本质上比比较整数更昂贵。

关于bubble-sort的 n 2 的观点:它根本不会改变增长的顺序。

答案 1 :(得分:1)

人们忽略其他n ^ 2冒泡操作或类似操作的原因是它们只会将复杂性作为一个常数因素。

渐近复杂性会忽略常数因子,因为顾名思义,渐近复杂度更关心的是当问题大小n增加时工作量增加了多少。如果算法具有恒定的复杂度,无论是1还是100,当n增加时它都不会改变。因此,不变因素不计算在内。