各位解决hash冲突都用哪种方式?
hash大家都在什么情况下会去用,冲突了习惯用哪种方式,不同的情况下分别用哪种?
谢谢各位啦!
[解决办法]
boost::unordered_map是链表,所以其最坏时间复杂度描述为O(N),但是其hash的bucket可以根据负载因子动态增加,因此效率很好。
[解决办法]
为什么要有数据结构这个东东?
因为要将现实世界或者抽象理论中的各种数据保存在计算机外存(光盘、硬盘、U盘……)或内存(ROM、RAM、SRAM……)里面的二进制字节数组中。
然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。至于具体如何处理就是所谓算法。
[解决办法]
动态,链表 静态 开放寻址
[解决办法]
先把长度开根号,然后链表。
[解决办法]
将当前冲突位置的索引号平方,再把数据存放到平方后的新位置里。
或者直接看冲突位置的下一个位置是否冲突,不冲突直接放进去,否则继续向后查找
[解决办法]
开放定址法
再散列函数法
链地址法
公共溢出区法
...
看《大话数据结构》的时候,书中说了一些。
处理散列冲突的方法
[解决办法]
链地址法
见《STL系列之九 探索hash_set》
http://blog.csdn.net/morewindows/article/details/7330323