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