数据结构学习笔记(七):哈希表(Hash Table)_hashtable有序吗(1)

本文探讨了数组、树型结构和哈希表之间的关系,强调数组如何从线性表推广到支持随机访问,以及哈希表通过哈希函数实现快速查找。还讨论了哈希冲突及其解决策略,如开放地址法和链表法,以及Python中的字典示例。
摘要由CSDN通过智能技术生成

我们认为,数组型结构和树型结构都可以看成线性表型结构的推广,而哈希表的散列型结构又是数组型结构的推广。为什么这么说呢?

线性表中,无论是链表、栈还是队列,每一个元素在空间位置上与其前后的元素构成关联;在数组中,每一个数据在空间位置上都与首元素构成关联,索引的本质含义是元素与首元素的偏移量;在结构中,每一个数据在空间位置上都与其上下层的元素构成关联。

因此,与线性表相比,数组将所有元素相互依赖的递归结构转换为所有元素具有相同基准的结构,从而实现了基于索引的快速随机访问将元素间一对一的关系推广为一对多的关系,从而实现了数据****结构的层级

上述有序结构中,能够衍生出无序结构的只有数组。在本系列讲解数组的文章中,提到了我们会基于日常经验将“索引”理解为“编号”的问题,这实际上就是散列的思想。因为元素一旦具有唯一的“编号”,我们定位元素时的思考角度就不再是谁在谁的前面或后面,而是那个元素的“编号”是多少。

“编号”与元素之间是**映射(Map)的关系,这很像字典(Dictionary)**的检字法。正因为数组中索引与元素具有映射关系,所以把索引看成编号是没有毛病的。编号可以有序,也可以无序。比如下面的Python代码定义的列表(相当于数组)和字典(相当于哈希表):

# 定义一个 列表(数组)
list_1 = ['赵', '钱', '孙', '李']

# 定义一个 字典(哈希表), 键-值 为上述列表的 索引-元素
dict_1 = {0:'赵', 1:'钱', 2:'孙', 3:'李'}

# 再定义一个 字典(哈希表),键-值 为 拼音首字母-汉字
dict_2 &
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值