下午好一切,替代大O符号?
我们说一个hashtable有O(前提是我们有钥匙)(1)查找,而linked list有O(1)下一个节点查找(前提是我们有一个参考到当前节点)。
然而,由于如何Big-O notation作品,这不是在表达(或分化)的算法X的成本是非常有用的,VS的算法X +米的成本。
例如,即使我们的标签的哈希表的查找和链表的查找为O(1)这两个,这两个O(1)■归结到一个非常不同数量的确实步骤,
的链接列表的查找固定为x步骤数。但是,哈希表的查找是变量。哈希表的查找的成本取决于散列函数的成本,所以为哈希表的查找所需的步骤数是:X +米,
其中X是固定数目
和米是未知可变值
换句话说,即使我们所说的两种操作O(1),哈希表的查找成本是幅度比链表的查找的成本较高。
的大O符号是具体地约输入数据集合的大小。这确实有它的优点,但它也有它的缺点,如我们将所有非变量归并为1时我们可以看到的。我们不能再看到它里面的m变量(哈希函数)。
除了大O符号,有另一个(建立)的符号,我们可以使用用于表达固定成本O(1),这意味着X操作和可变成本O(1),这意味着x + m(m,散列函数)的操作次数?
从什么我收集,你在找什么不会有太大的记谱目的,因为这是显而易见的任何语言来陈述:这需要很多 s执行。 (其中是特定于上下文的。)真的,如果有某种特殊符号,除了“not big-O”之外,它不会添加任何内容,因为没有说明大-O。 –
Kaganar
2012-04-25 18:20:08
@Kaganar *物理*这个词似乎在这里引起一些混淆。我已经从问题中删除了* physical *这个词,希望能使它更清楚。 – Pacerier 2012-04-25 18:32:47