开放寻址法
来源:互联网 发布:小程序域名白名单 编辑:程序博客网 时间:2024/06/05 04:08
开始之前先引用一个牛人对开放寻址法的介绍,http://blog.csdn.net/shaobingj126/article/details/8156675。在此基础上,本文进行更为准确更为恶心地补充说明。在进行坑位选择时,顾客对所有的坑位有一个喜好排序,然后按照特定排序方法,尽量选择最喜欢的坑位,检查里面是否有人,然后进行蹲坑,这就是进行insert操作。而search,可以认为是有人来厕所找人,他知道被找人的喜好,然后按照被找人的喜好,依次查找,如果找到某个人,可以返回位置信息。如果按顺序找到一个“干净”的坑位,就之间返回要找的人没在厕所。“干净”的坑位可以理解是没有人使用过该坑位。假设上厕所的人都不冲厕所,即如果有人用过某坑,会有一个标记,该坑没有记录使用者的信息,只标记被使用过了,而且现在没人,即这编码被insert过,而且又delete掉了。尽管坑可能被用过,但是只要按照喜好顺序,只要发现没人,顾客就会选择这个坑位,被insert到这个位置。而找人时,发现脏的没人的坑位,需要继续寻找,因为可能被找的人已经离开厕所了,也可能之前有人,被找的人在下一个位置,因此直到找到“干净”的坑位,确定,目前厕所里面没有要找的人。
坑位编号是0,1,……m-1,但是喜好编号是另一个顺序h(k,0),h(k,1),……h(k,m-1),两个集合是一一映射,但是不是按顺序对应的。常用的对应算法有一下几种。
线性探查
h(k,i)=
凭我们的历史经验可知道,当这个坑被选择时,相邻的坑位被选择几率会很大,《算法导论》中说某坑位前有i个位置都被占了,则该位置为下一个被占用的概率是(i+1)/m,没有想清楚为什么。于是乎有了下面
二次探查
h(k,i)=
双重散列
h(k,i)=
- 算法-----开放寻址法
- 开放寻址法记录
- 开放寻址法
- 开放寻址法PYTHON实现
- CLRS 11.4开放寻址法
- 算法导论 开放寻址法
- chap11 哈希表实现-开放寻址法
- 散列表的开放寻址法
- 开放寻址法解决散列冲突
- 算法导论:开放寻址
- 牛人解释哈希的开放寻址法
- 《算法导论》笔记 第11章 11.4 开放寻址法
- C语言 开放寻址法HASH表存储简单实现
- 哈希冲突解决之开放寻址法
- 算法导论11.4开放寻址法 练习总结
- [数据结构]Hash表初学(开放寻址法 )
- 算法导论程序26--开放寻址法(Python)
- hash实现--开放寻址方式
- DHCP服务
- 如何用批处理获取本地磁盘中的指定文件的路径
- 不写一行java代码为listview spinner填充数据
- uva 12300
- 九度oj 1446
- 开放寻址法
- Android Studio安装与gradle的关系
- leetcode 242: Valid Anagram
- [深入理解Android卷一全文-第六章]深入理解Binder
- uva12661 Dijkstra
- 删除指定字符串中的子串
- STL中的set容器的一点总结
- storyboard之 prepareForSegue:sender:
- UILabel如何设置成透明