算法学习day2

参考资料《我的第一本算法书》

数据结构之哈希表、堆、二叉查找树。

(1)哈希表
①由键(key)和值(value)组成数据,键作为数据的标识符,值作为数据的内容。

②哈希表的关键是设计合理的数组大小。

③存数据操作:利用哈希函数计算键的哈希值,用得到的哈希值除以准备的数组长度,取余数,即可得到应该放在数组的哪一个位置;如果有冲突(即数组中某个位置已经有数据了)出现,可使用链表在已有数据的后面继续存储新数据(这也被称为链地址法)。

④查数据操作:和存类似,先计算在数组中的哪个位置;得到的位置中,若无链表,则直接查到,若有链表,则进行线性查找(只能从头开始查询。数据量多时,浪费时间)。

⑤哈希表可以使数据的查询效率得到显著提升。

(2)堆
①是一种图的树形结构,被用于实现“优先队列”(即一种数据结构,可自由添加数据,但取数据时要从最小值开始按顺序取出。)。

②每个顶点被称为“结点”,数据便存在这些结点中。每个结点只能有两个子结点。

③在添加数据或者说在排列的时候应该是从上到下,从左到右。且必须遵守的规则是:子结点的数必须大于父结点。如果不符合规则,则交换子结点和父结点的位置,可不断操作,直到符合规则。

④取数据时,是从最上面的数(最小的数)开始的。取出后要调整堆,将最后的数(最下一行,最右的数)调到最上面,再进行交换,使其符合③中所描述的规则。

**也有降序堆(即最大值在最上面,相应的规则也变了,子结点的数要小于父结点)。

(3)二叉查找树
①是一种图的树形结构,每个结点只有两个子结点。

②性质:每个结点的值均大于其左子树上任意一个结点的值;每个结点的值均小于其右子树上任意一个结点的值。

③二叉查找树的最小结点要从顶端开始,往其左下的末端寻找;其最大结点要从顶端开始,往其右下的末端寻找。

④添加数据:从顶端结点开始,依次比较,大于就右移,小于就左移,不断比较移动,直至有空位。

⑤删除数据:直接删除目标结点,若目标结点有一个子结点,则将子结点上移,若目标结点有两个子结点,则在目标结点的左子树中寻找最大结点上移(或在目标结点的右子树中找最小结点上移)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值