散列表

简单的介绍2-3查找树和红黑树的原理和实现细节…


简单了解散列表的实现和一些基本的原理…

散列表通过散列函数计算出对应的散列值,通过散列值找到目标所在地。

例如:Java里面的hashCode()方法

// 一下是Java String 类的hashCode方法
public int hashCode() {
        int h = hash;
        if (h == 0 && value.length > 0) {
            char val[] = value;

            for (int i = 0; i < value.length; i++) {
                h = 31 * h + val[i];
            }
            hash = h;
        }
        return h;
    }
一般一个优秀的散列方法需要满足三个条件:
  1. 一致性——等价的键必然产生相等的散列值
  2. 高效性——计算简便
  3. 均匀性——均匀地散列所有键

例如:

基于拉链法的散列表

通过散列函数得到具体的位置,用链表存储每个键对应的一系列值。

参考资源:

《算法 Algorithm》罗伯特·赛奇威克