2
我正在Python中使用defaultdict進行簡單的算法排序,創建一個用作鍵的散列,然後只是通過字典,然後打印出超過一個單詞值。Python中的字符串搜索算法比較[教程作業]
最初通過使用創建一個排序的字符串製作哈希開始:
def createHashFromFile(fileName):
with open(fileName) as fileObj:
for line in fileObj:
line = line.lower()
aHash = ("").join(sorted(line.strip()))
aSorter[aHash].append(line.strip())
但是,因爲排序()函數是O(n^2)都配備了由創造過黃金哈希的建議因式分解。我創建了一個已經映射所有的小寫字母的黃金,然後做了解釋:
def keyHash(word):
mulValue = 1
for letter in word:
letter = letter.lower()
mulValue = mulValue * primeDict[letter]
return mulValue
在30萬字,在0.75s字符串哈希運行,並在1秒的主要哈希奔跑。我一直在讀這篇文章,但我無法確定我是否錯過了這個或者它爲什麼運行速度較慢。
就作業而言,這已經完成,但我想了解我在這裏失蹤的原因或缺點。
非常感謝你。我真的很欣賞這些反饋。 我曾經和朋友聊過,我們已經認識到乘法會是一個很大的因素,但不知道關於排序()和它的成本。真的很想確認我的想法。 回覆:關於時間的反饋,我在其中添加了更多的時間點。定時在字典中創建和添加散列,然後對結果進行平均以得到「每個散列」: 字符串散列 - 每個 有3.5微秒prime hash - 每個4.5微秒 – Syzorr 2015-03-03 03:13:18