欢迎光临散文网 会员登陆 & 注册

【读书笔记】数据结构与算法之美 第7章 跳表、并查集、线段树和树状数组

2022-07-09 15:44 作者:圣斗士-DS-ALGO  | 我要投稿

《数据结构与算法之美》,王争 著

标签:数据结构、算法

第7章 跳表、并查集、线段树和树状数组

一、跳表

这一部分介绍了

  • 跳表的由来

  • 用跳表查询到底有多快

  • 跳表是不是浪费内存

  • 高效插入和删除

  • 跳表索引动态更新

  • 跳表的应用:为什么Redis的有序集合用跳表而非红黑树来实现

笔记:跳表是一种动态数据结构,各种基本操作的性能是不错的,但是,这个数据结构比较新,很多编程语言没有封装,开发者要使用跳表要自己从零开始实现。

二、并查集

这一部分介绍了

  • 并查集的由来

  • 基于链表的思路实现并查集

  • 基于树的思路实现并查集

笔记:作者通过用不同的数据结构来实现并查集,这种组织方式对学习者有效

三、线段树

这一部分介绍了

  • 区间统计问题(统计某个区间的数据个数):使用线段树求解

  • 线段树的其他应用:统计某个区间的数据之和、最大值和最小值、以及某个区间的第K大值

笔记:区间统计问题,是很多编程比赛经常出现的问题,实际工程中也有很多应用。当然,实现线段树还是需要一定的编程能力的。

四、树状数组

这一部分介绍了

前缀和问题

树状数组和线段树的对比

如何用树状数组实现一个高性能】低延迟的实时排行榜

笔记:所有可以用树状数组来解决的问题都可以用线段树来解决。但是如果能用树状数组来解决,代码会更加简单,空间消耗更少。


这一章介绍的跳表、并查集、线段树和树状数组属于比较高级的数据结构,所谓高级,其实就是一般数据结构教材和课程是没有、不讲也不考的。而且,这类数据结构一般不常用,只是在某些特定问题和特殊需求时有奇效。

跳表是基于有序链表、添加多级索引构建而成,支持快速的查找、插入、删除数据操作。除此之外,跳表还支持快速地查找落在某个区间的数据。

并查集主要用来根据两两对象之间的直接关系,快速查询任意两个对象之间是否存在直接或间接的关系。

线段树主要用来做区间统计,比如统计落在某个数值区间的数据个数。

树状数组主要用于求动态数据集合的前缀和。

【读书笔记】数据结构与算法之美 第7章 跳表、并查集、线段树和树状数组的评论 (共 条)

分享到微博请遵守国家法律