c++ 怎么写哈希算法。 实现快速搜索到数组中某个字符串

2024-11-16 16:22:16
推荐回答(1个)
回答(1):

哈希都是基于数据结构的,当初你存这堆数据的时候就应该存在哈希表里。如果只给你一个数组,让你找某个特定元素,没有本质上比一个一个查更有效率的算法了。

当然如果有多次查询操作,可以建立一个哈希表来帮助查询(如果只为了一两次查询就建哈希表就得不偿失了),令h(c)返回c的ascii码,然后建一个数组B[128]并初始化为0,存c就令B[h(c)]=c在原数组里的位置。这样找c就直接查B[h(c)]。

第二种情况同理,不过要令h(i, xx)=i*128+xx(这样就不会有冲突了,对不同的(i,xx),h(i,xx)也不同),而且B要有128*128的空间(哈希的特点就是要牺牲空间来换取速度)。