假设有7个数据:21,36,33,44,56,24,26;利用hash:
Key = value % 9;
我分配了一个数组array[7]来存储,意味着不会浪费内存,当然接下来看效率如何,经过对7个数据的hash过后,应该得到7个索引依次为:1,6,3,4,6,4,6;显然有冲突连续出现。我把有冲突的暂且不放入数组中,就可以得到如下情况:
然后将有冲突的数据依次返回到数组中,首先我从数组由小到大的顺序遍历,当依次发现一个空的位置时,将冲突过的数据依次填入,每填上一数据,将前一个同key值数据的指针指向他。经过如此解决冲突后就可以得到下面的结果:
这样一来,可以大大减少了内存的浪费,且数据有规律的分布在数组中,查找起来难度也大大降低。特别实用于比较大的数据对象的管理。