散列表 hash_table

如果有key为0-25  
26个key  
所对应的value是a-z
52个字母的value
用散列来存放的话可以是
直接开放100个连续的地址
取散列因子为1

存放的空间应该是

0 1 2 3 4 5 6 7 8 9 10 25... 99
a b c d e f g h i j ... z

查找的时候通过散列地址查找0的key的时候
直接可以通过下标查找到a


这样就可以实现一个自定义的数组 通过存放key的数组来定位value的地址

普通的遍历查找方式时间复杂度是O(n)(最坏情况)

而散列表查找复杂度近似为O(1)

另外一个钟情况

如果有10个value 对应值为 1, 9, 15, 5, 19, 12, 13, 22 ,25, 10

hash_table的长度为5

hash因子为5

f(value)

{

    return value % 5;

}

则结果为

{

    {1}, {15, 5, 25, 10}, {12, 22}, {13}, {9, 19}, {}

}

因为结果内链表数量一般不会太大 所以查找难度基本也等于O(1)

猜你喜欢

转载自blog.csdn.net/qq_29094161/article/details/82664088