如果散列函数旨在用于访问哈希表,那么完美散列函数和常规散列函数之间的复杂性没有区别,因为它们都可能在表中产生冲突。原因是与哈希表中元素相关联的索引是散列除以表长度的余数(通常是素数)。这就是为什么两个散列为不同值的元素会发生冲突,如果它们的余数模(所述)素数对它们都是相同的。这意味着在这两种情况下访问表的时间复杂度都是O(1)
。
另请注意,散列的计算通常取决于输入的大小。例如,如果要散列的元素是字符串,则好的散列会考虑它们的所有字符。因此,为了保持O(1)
的复杂性,必须限制输入的大小(或长度)。同样,这适用于完美散列和常规散列。