散列表-Hash table

散列函数(hash function)

WIKI

A hash function is any function that can be used to map data of arbitrary size to data of a fixed size.

定义

无论输入什么数据,输出一个数值

工作原理

  • 散列函数总是将同样的输入映射到相同的索引

  • 散列函数将不同的输入映射到不同的索引

  • 散列函数知道数组有多大,只返回有效索引

散列表(hash table)

WIKI

In computing, a hash table (hash map) is a data structure which implements an associative array abstract data type, a structure that can map keys to values.

介绍

  • 散列表使用散列函数来确定元素的存储位置

  • 散列表由键和值组成,散列表将键映射到值

  • Python提供的散列表实现为字典,使用大括号创建散列表

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

适用于

  • 模拟映射关系

  • 防止重复

  • 缓存/记住数据,以免服务器通过过处理来生成它们

冲突

给两个键分配的位置相同

解决:将两个键映射到同一个位置,就在这个位置存储一个链表

经验教训

  • 散列函数很重要,散列函数将键均匀地映射到散列表的不同位置

  • 如果散列表存储的链表很长,散列表的速度将急剧下降

性能

 

 

散列表平均情况

散列表最糟情况

数组

链表

查找

O(1)

O(n)

O(1)

O(n)

插入

O(1)

O(n)

O(n)

O(1)

删除

O(1)

O(n)

O(n)

O(1)

PS: O(1)称为常量时间。不管散列表多大,所需时间相同

避免最糟情况

  • 较低的填装因子

  • 良好的散列函数

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值