none
求英文单词的哈希函数!! RRS feed

  • 问题

  • 近来想做一个哈希表来存储约10万个英文单词,想到一种方案就是每个单词能得到唯一的哈希地址,或者说尽量冲突最小,大家有什么好的方案呢?请教!
    清爽无比
    2009年4月29日 13:26

答案

全部回复

  • 你好!
        一般使用乘法hash就可以了,把乘数设置为33,具体算法可以在网上搜索获得,有很多的啊!
        希望对你有帮助!
    周雪峰
    2009年4月29日 13:40
    版主
  • 你好,可以试试 List<...> 或 Dictionary<..., ...> 你的数据有点多,性能怎么样还没具体测试过



    知识改变命运,奋斗成就人生!
    2009年4月29日 13:41
    版主
  • dictionary<>  是自动对key生成哈夕表
    如果是不需要key-value  的对应
    可以用  hashset<>
    list<>基于数组 效率比较低
    不需要自己琢磨hash 算法
    工作突然有点忙 嘿嘿
    2009年4月30日 0:05
    版主
  • 金山的做法是把单词保存到XML中,a开头的保存到a.xml中,然后再进行索引,其实就是一个index,这样就有很高的性能,给你提供一个思路 :)
    低调,低调
    2009年4月30日 2:56
    版主
  • 这个也是前缀树的变形方式拉  适用于持久化保存  不适合查找


    工作突然有点忙 嘿嘿
    2009年4月30日 3:03
    版主
  • 各位大佬,我本来也想用NET里面的HashTable等类,不过因为老师要求要自已写出那个哈希函数,而且要求性能要非常好,所以用集成环境里面的类就不行了,大家多多出主意,现在想得头痛.
    周版主的那个"乘法Hash"我上网查了一下,似乎没有相关的,呵呵,周版主,能否给点详细的信息?
    清爽无比
    2009年4月30日 5:56
  • 我感觉如果学习的话,还是自己研究hash函数的一些算法比较好,很多公司面试的时候都是不允许使用类库里的现成的类的!
    这里有详细的介绍:
    http://blog.csdn.net/linrix/archive/2007/12/15/1938009.aspx
    周雪峰
    2009年4月30日 6:21
    版主
  • 各位大佬,我本来也想用NET里面的HashTable等类,不过因为老师要求要自已写出那个哈希函数,而且要求性能要非常好,所以用集成环境里面的类就不行了,大家多多出主意,现在想得头痛.
    周版主的那个"乘法Hash"我上网查了一下,似乎没有相关的,呵呵,周版主,能否给点详细的信息?
    清爽无比

    呵呵  用 reflector 反编一下  学习下
    工作突然有点忙 嘿嘿
    2009年4月30日 6:26
    版主
  • 实际上HashTable类的源码微软已经提供了,可以直接看到源代码的,如果学习的话可以参考他的实现!这样提高比较大!
    周雪峰
    2009年4月30日 6:32
    版主
  • http://www.iwms.net/n1978c13.aspx

    这里还有更详细地讲解
    工作突然有点忙 嘿嘿
    2009年4月30日 7:04
    版主
  • 我记得数据结构的书里面讲过hash的吧,用C#实现一个也不是很难,就看你要选用什么hash算法了。。
    低调,低调
    2009年4月30日 7:53
    版主