C语言第三页笔记

61.对一个P进制的数,如果要转换为Q进制,需要分为两步:第一步先将P进制数转换为十进制
数,第二步再将十进制数转换为Q进制数
62.散列:将元素通过一个函数转换为整数,使得该整数可以尽量唯一地代表这个元素。其中把这
个函数称为散列函数H。
63.除留余数法是指把key除以一个数mod得到的余数作为hash值的方法,即H(key)=key%mod;
64.线性探查法:当得到key的hash值H(key),但是表中下标为H(key)的位置已经被某个其他元素
使用了,那么就检查下一个位置H(key)+1是否被占,如果没有,就使用这个位置;否则就继续检
查下一个位置。这个做法容易导致扎堆,即表中连续若干个位置都被使用,这在一定程度上会降低
效率。
65.平方探查法:当表中下标为H(key)的位置被占时,将按下面的顺序检查表中的位置:
H(key)+1^2H(key)-1^2H(key)+2^2....。如果在检查过程中H(key)+k^2超过了表长Tsize
那么就把H(key)+k^2对表长取模。
66.链地址法:链地址不计算新的hash值,而是把所有的H(key)相同的key连接成一条单链表。这
样可以设定一个数组Link,范围是Link[0]~Link[mod-1],其中Link[h]存放H(key)=h的一条单链
表,于是当多个关键字key的hash值都是h时,就可以直接把这些冲突的key直接用单链表连接起
来,此时就可以遍历这条单链表来寻找所有H(key)=h的key。

猜你喜欢

转载自blog.csdn.net/SeNiLS/article/details/114677768