复杂度分析:
顺序查找: O(n)
二分查找: O(\log_2n)
散列方法: O(C)
散列表与散列方法
将一个元素的关键码和存储位置之间建立对应的函数关系 Hash( ), 使得每个关键码与结构中的唯一的存储位置相对应...:
Address=Hash( )
需要解决两个问题:
找到一个合适的散列函数,避免或尽量减少冲突
拟定解决冲突的方案
散列函数
取余法
散列表中地址数位m, p为不大于m但最接近m的质数....将结果化成八进制
处理冲突的闭散列(开地址)方法
产生冲突元素的关键码互为同义词....如果hash1(key)计算得到的桶号d已经被占用, 那么用第二个散列函数hash2(key)计算得到 c, 则依次探查 d+c,d+2c,d+3c…....再散列
当表项数>表的70%时, 可以再散列.
即, 建立一个两倍大的表, 新的散列函数取距离原规模两倍大小最近的素数.
处理冲突的开散列(链地址)方法
将同义词放入同一个桶.