今天看了一下《算法导论》第十一章的散列表,里面有一节是关于开发寻址方式。
下面是我的简单的实现:
下面是测试:
其中的Random32()的实现是:
c函数rand()产生的数在0~RAND_MAX之间(在我的机器,RAND_MAX的大小是32767),比较小,不利于测试,Random32函数
能产生0到unsigned int最大之间的数。
开放寻址的方式相对链表方式节省了空间(省了一个指针),但加大了插入和查找时间,特别如果插入的数重复太多的话,那么时间会有一个很大的提升。
下面是测试结果:
如果用rand代替Random32,测试结果是:
当到了10000000,对比一下就知道,那时间是花花的上去了。