散列表 淩亂°似流年 2021-09-26 14:26 425阅读 0赞 **直接寻址表** 假设某个动态集合中的每个元素取自于U=\{0,1,2,…,m-1\},这里的m不是一个很大的数,假设没有两个元素具有相同的关键字。我们用一个数组(**直接寻址表**),记为T\[0…m-1\],其中的每个位置成为槽,对应全局区域中的一个关键字,如T\[k\]指向集合中关键字为k的元素,如果不存在k元素,则记为T\[k\]=null。 优点:在U很小的情况下,插入、查找、删除的时间复杂度均为O(1)。 缺点:在U很大的情况下,计算机的可用内存可能无法存储;若关键字集合远小于U,则会造成很大的空间浪费。 **散列表** 在散列表中,将存储需求降至了|O(K)|,同时保持了其查找元素的优势。在该方式下,关键字k存放在槽h(k)中,即利用散列函数h,由关键字计算出槽的位置,这里,函数h将关键字k的全局U映射到散列表T\[0…m\]的槽位上。 **散列函数**: 好的散列函数的特点:h尽可能随机,即将关键字映射到同一个槽中的可能性尽可能降低。 多数散列函数都假定关键字的全域为自然数集N=\{0,1,2…\}。因此,如果所给关键字不是自然数,则需要找到一种方式将其转换为自然数。例如字符串pt,可以转换为十进制整数对(112,116)(ASCII码表),然后以128为基数,pt即为关键字(112\*128)+116=14452。 三种设计散列函数的方法: **除数散列法** h(k)=k mod m (m应该取不太接近2的整数幂的素数) **乘数散列法** h(k)=|m(kA mod 1)|(向下取整) (kA mod 1指的是取kA的小数部分,m的取值一般为2的某个幂次,A取(√5-1)/2是一个比较理想的值) **全域散列**(性能最好) 随机地选择散列函数,使之独立于要存储的关键字。 两个关键字可能会映射到同一个槽中,这种情况成为冲突。 为了解决冲突,有两种方法:链接法和开放寻址法。 **链接法**: 把散列到同一槽中的所有元素都放在一个链表中。如果槽j中有一个指针,它指向存储所有散列到j的元素的链表的表头;如果不存在这样的元素,则槽j中为NULL。 **开放寻址法**: 在开放寻址法中,所有元素都存放在散列表里,即每个表项或包含动态集合的的一个元素,或包含NIL。当查找某个元素时,要系统的检查所有的表项,知道找到所需的元素或者最终表明该元素不在表中。 线性探查: ![这里写图片描述][70] 二次探查: ![这里写图片描述][70 1] 双重探查: ![这里写图片描述][70 2] [70]: /images/20210923/03ba5a8bbc7548e0b6ca4fa508742502.png [70 1]: /images/20210923/aa356539ce33418f9747206ee920ef2f.png [70 2]: /images/20210923/630245940e5547e09048ea5782414f31.png
相关 散列表查找 定义 通过散列函数寻找某个关键字所存在的位置,利用散列技术存储在一块连续的存储空间中,这块连续的存储空间称为散列表,对应的存储位置成为散列地址。 ![在这里插入图片描述 柔情只为你懂/ 2023年07月09日 14:26/ 0 赞/ 14 阅读
相关 散列表 散列表 散列表又称为哈希表,英文“Hash Table”。 散列表思想利用的是数组支持按照下标随机访问数据的特性。 散列函数: 通过key,计算出value, 布满荆棘的人生/ 2023年06月25日 06:28/ 0 赞/ 20 阅读
相关 回顾散列表 一 概述 散列表是一种非线性的数据结构,通过利用Hash函数将指定的键(key)映射至对应的值(value),从而实现高效的元素查找。 注意点:散列表的key要保证唯一的。 小灰灰/ 2022年09月15日 12:39/ 0 赞/ 209 阅读
相关 散列表 1 定义 散列技术是在记录的存储位置和它的关键位置之间建立一个确定的对应关系`f`,使得每个关键字`key`对应一个存储位置`f(key)`,即: 存储位置 = 不念不忘少年蓝@/ 2022年04月04日 06:25/ 0 赞/ 267 阅读
相关 散列表(上) 文章目录 散列思想 散列表用的是数组支持按照下标随机访问数据的特性,所以散列表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有 淡淡的烟草味﹌/ 2022年03月27日 13:40/ 0 赞/ 292 阅读
相关 散列表 散列方法不同于顺序查找、二分查找、二叉排序树及B-树上的查找。它不以关键字的比较为基本操作,采用直接寻址技术。在理想情况下,无须任何比较就可以找到待查关键字,查找的期望时间为O 一时失言乱红尘/ 2022年03月22日 17:06/ 0 赞/ 439 阅读
相关 散列表 直接寻址表 假设某个动态集合中的每个元素取自于U=\{0,1,2,…,m-1\},这里的m不是一个很大的数,假设没有两个元素具有相同的关键字。我们用一个数组(直接寻址表), 淩亂°似流年/ 2021年09月26日 14:26/ 0 赞/ 426 阅读
相关 散列表(一).散列表基本内容介绍 一说到散列表,大家脑子想到的词就是:Hashmap、key-value、查找速度快、增删速度快等等。确实,在我们平常的学习生活中,散列表是很常见、也是用的很多的数据结构... 你的名字/ 2021年01月10日 15:37/ 0 赞/ 822 阅读
还没有评论,来说两句吧...