本文介紹了在哈希表中創(chuàng)建字符串的哈希值的時間復(fù)雜性的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
通常說,在哈希表中插入和查找字符串是O(1)。但是字符串的散列鍵是如何生成的呢?為什么不考慮O(L),字符串的長度?
我很清楚為什么對于整數(shù),它是O(1),而對于字符串,它不是。
我確實理解為什么在一般情況下,插入哈希表是O(1),但我對插入哈希表之前的步驟感到困惑:生成哈希值。
在Java中生成字符串的散列鍵的方式與在C++中生成unordered_map的方式有什么不同嗎?
謝謝。
推薦答案
在哈希表中插入EQUTE是O(1),因為它在表中的元素數(shù)中是常量。
這個上下文中的”O(1)”并沒有聲明計算散列的速度有多快。如果這方面的努力在某種程度上有所增長,那就是它的方式。然而,我發(fā)現(xiàn)一個像樣的(即”適合此應(yīng)用程序”)散列函數(shù)的復(fù)雜性不太可能在散列對象的”大小”(即我們的字符串示例中的長度)中比線性的要差。
這篇關(guān)于在哈希表中創(chuàng)建字符串的哈希值的時間復(fù)雜性的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,