从零开始学数据结构和算法(四)哈希表的思想和二叉树入门

HashTable

  • 哈希表(HashTable, 也叫散列表)

是根据关键码值(Key value)而直接进行访问的数据结构,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

  • 关键码值(Key value)也可以当成是key的hash值

这个映射函数叫做散列函数

  • 存放记录的数组叫做散列表

HashTable 例子

  • Key : {14, 19, 5, 7, 21, 1, 13, 0, 18} 散列表: 大小为13 的数组 a[13]; 散列函数: f(x) = x mod 13;

  • hashtable 需要自定义的内容

散列函数与散列表大小 hash 冲突的解决方案 装填因子:为什么需要这个值?因为数据越接近数组最大值,可能产生冲突的情况就越多

缺点

  • 扩容需要大量的空间和性能

应用

  • 电话号码、字典、点歌系统、QQ、微信的好友等

设计(拉链法)

  • JDK 1.8 以前

  • JDK 1.8 开始

当链表长度超过阈值,就转成红黑树

什么是树

树的概念

节点与树的度
  • 结点拥有的子树数称为结点的度。 度为0的结点称为叶子结点或终端结点,度不为0的结点称为非终端结点或分支结点。 除根结点以外,分支结点也称为内部结点。 树的度是树内各结点的度的最大值。

层次和深度

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值