在Perl哈希中查找项目的时间复杂度是多少?

时间:2010-09-23 01:56:56

标签: perl hash

假设我有一个包含n个单词的文件。当我读取文件中的每个单词时,我将它存储在哈希(在Perl中)中。当我回过头来查找哈希中的单词时,在哈希中查找字符串(单词)的时间复杂度是多少?

例如:

my %seen = ();
@arr=("one","two","three");
foreach $item (@arr){
    if($seen{$item}) {//do something}
}

在这个程序中,我正在查找哈希中的项目。在哈希中查找字符串的时间复杂度是什么?

此外,是否可以详细说明如何在Perl中实现哈希? (内部事情发生在哈希?或者它只是一个关联数组)

2 个答案:

答案 0 :(得分:11)

Perl哈希提供常量时间查找。它们被实现为真正的哈希表(必要时自动重新调整),而不是关联数组。

答案 1 :(得分:4)

如果您想了解Perl如何实现哈希,请在 hv.c hv.h 中完成源代码。如果您只想要概述,可以尝试perlguts。但是,正如弗鲁多所说,查找任何密钥的时间与查找任何其他密钥的时间相同。这是一个真正的哈希。

你可能还想看看Jon Bentley关于编程珍珠(而不是Perl书)中哈希的论文。