2010-04-14 55 views

回答

3

理論最壞情況是O(n),因爲如果你恰巧插入所有元件,使得它們連續碰撞後,插入將有最後一個元素被放入表n步從原來的哈希位置。

然而,如果你知道輸入元素的分佈(可能假定是隨機的,但當然假設是母親......),你可以計算平均預期步數,知道你的散列函數的分佈(希望統一,但它取決於算法的質量),哈希表的長度和插入的元素數量。

如果您的散列函數足夠均勻,則可以使用生日問題計算碰撞概率,並根據這些概率計算預期的探測長度。

+0

你確定嗎?如果每次插入碰撞都會發生什麼?那麼你將不得不跳過1個插槽,然後2,然後3,....然後n。你會有1 + 2 + 3 + ... n給你一個複雜的O(n^2>,不是嗎? – CodyBugstein 2013-04-05 00:45:50

+1

這就是我所說的,線性探測的複雜度是O(n),這意味着O(n)用於*每個插入/刪除/查找。因此,如果你有n個插入,那麼你的總複雜度是O(n^2) – wich 2013-04-05 10:54:20