哈希(散列)函数并不是特别新鲜的事物了,这次来谈一下关于哈希函数的一点有趣的想法。主要是一种入门的帮助记忆的方式,看完会感觉到,WC,这TM就是哈希,起了个这么高大上的名字。
场景式应用
可能因为自己更偏重于工程式思考,所以总是特别强调应用场景的问题,而且,如果对算法这种抽象的知识联想场景,会记忆更加深刻。尤其,更加有助于应用式思考,毕竟,做产品更加有趣。好的,闲话不多说,哈希场景很简单,现在开始设想场景:
面前有一个很长的序列[3,1,4,6,7,8,10,18,17,290,288…],现在我想找到290,直接找的话需要比较10次才能找到,但通过构造一个哈希函数f(x)=a*key+b(a、b等自己选取),就可以根据对应的key来直接定位290,只需要1次。
好了,以上就是哈希函数的应用场景,然后就是如何构造哈希函数的问题,这一部分参考内容已经很多了,本次主要是讲一下应用场景来加深对哈希函数的印象,与其称之为哈希函数,不如叫做序列快速找数,通常哈希函数会成为一个程序中的一个小部分,所以当遇到上述场景时,就可以快速反应到“序列快速找数”,然后再反应到“哈希函数”。