cuckoo_Hash(鸠占鹊巢)
布谷鸟哈希,是通过两个以上的哈希函数,对Hash_table进行操作
插入:
通过计算hash1的值看是否位置已经被占用,被占用,则看看下一个是不是也被占用,被占用则踢出该值,并占用该空间。然后我们对被踢出的值再使用另一个hash算法,去寻找位置,或踢出别人,直到有位置。若一直没有位置,且循环次数达到较大次数,则扩增hash_table,重新建表
!!!插入前必须检查key是否存在,不然则容易出现挤兑循环。
查找:
通过计算两个hash函数,查看是否该位置是否有我们想要的内容
删除:
通过查找,erase与我们key值相同的内容
布谷鸟hash,改良
1:通过建立较多的hash关系去尽可能的占满表的空间
2:构建一个hash函数一个表的情况,也可以提高表的使用率。
布谷鸟hash:适用于操作插入少,查找多的情况。
而普通的hash表(链地址法):适用于操作插入多,查找少的情况。
进阶hash表(嵌套hash):hash<hash<Type>>,查找速度也很快,但是消耗的空间较大,同时内嵌的hash表难维护
Java GUI编程:
先生成一个Frame面板,再从中添加组件Panel,组件之中可以多次嵌套panel,也可以增加lable。
优先队列不可以使用迭代器遍历,只能获取堆顶元素。最小堆的实质是一颗满二叉树,可以使用链表实现,也可以使用数组实现。使用数组实现时,具有满二叉树的特性。
网友评论