数据结构和算法基础知识点

数据结构和算法基础知识点

链表

1、链表是一种由节点组成的线性数据集合,每个节点通过指针指向下一个节点。它是 一种由节点组成,并能用于表示序列的数据结构。

2、单链表:每个节点仅指向下一个节点,最后一个节点指向空

3、双链表:每个节点有两个指针p,np指向前一个节点,n指向下一个节点,最后一个 节点指向空。

4、循环列表:每个节点指向下一个节点,最后一个节点指向第一个节点。

5、时间复杂度:索引:O(n),查找:O(n),插入:O1),删除:O1

1、栈是一个元素集合,支持两个基本操作:push用于将元素压入栈,pop用于删除栈顶元素。

2、后进先出的数据结构

3、时间复杂度:同上

队列

1、队列是一个元素集合,支持两种基本操作:enqueue用于添加一个元素到队列, dequeue用于删除

2、先进先出的数据结构

3、时间复杂度:同上

1、树是无向的联通的无环图

2、二叉树:是一个树形数据结构,每个节点最多可以有两个子节点,称为左子节点和 右子节点。

3、满二叉树:二叉树中每个节点有0或者2个子节点。

4、完美二叉树:二叉树中每个节点有两个子节点,并且所有的叶子节点的深度是一样 的

5、完全二叉树;二叉树中除最后一层外,其他各层的节点数均达到最大值,最后一层 的节点都连续集中在最左边。

二叉查找树

1、是一种二叉树,其任何节点都大于等于左子树中的值,小于等于右子树中的值。

2、时间复杂度:索引查找插入删除均为Olog(n)

字典树

1、又称为基数树或前缀树,是一种用于存储键值为字符串的动态集合或关联数组的查 找树。树中的节点并不直接存储关联键值,而是该节点在树中的位置决定了其关联 键值,一个节点的所有子节点都有相同的前缀,根节点则是空字符串。

数状数组

1、又称为二进制索引树,其概念上是树,但以数组实现,数组中的下标代表树中的节 点,每个节点的父节点或子节点的下标可以通过运算获得。数组中的 每个元素都 包含了预计算的区间值之和,在整个树更新的过程中,这些计算的值也同样会被更 新。

2、时间复杂度:区间求和:Olog(n)),更新:Olog(n)

线段树

1、线段树是用于存储区间和线段的树形数据结构。它允许查找一个节点在若干条线段 中出现的次数。

2、时间复杂度:同上

1、堆是一种基于树的满足某些特征的数据结构,整个堆中的所有父子节点的键值都满 足相同的排序条件。堆分为最大堆和最小堆。在最大堆中,父节点的键值永远大于 所有子节点键值,根节点的键值是最大的。最小堆中,父节点的键值永远小于子节 点键值,根节点的键值是最小的。

2、时间复杂度:索引查找插入删除:同上,删除最大最小:O1

哈希

1、哈希用于将任意长度的数据映射到固定长度的数据。哈希函数的返回值被称为哈希 值哈希码或者哈希。如果不同的主键得到相同的哈希值,则发生了冲突。

2、Hash Maphashmap是一个存储键值关系的数据结构,hash map通过哈希函数将键 值转化为桶或者槽中的下标,从而便于指定值的查找。

3、冲突解决:链地址法:在链地址法中,每个桶是相互独立的,每个索引对应一个元 素列表。处理hashmap的时间就是查找桶的时间与遍历列表元素的时间之和。

开放地址法:在开放地址法中,当插入新值时,会判断该值对应的哈希桶是否存在, 如果存在则根据某种算法依次选择下一个可能的地址,直到找到一个未被占用 的地址。开放地址即某个元素的位置并不永远由其哈希值决定。

1、图是G=(V,E)的有序对,其包括顶点或节点的集合V以及边或弧的集合E,其中E 括了两个来自V的元素。

2、无向图:图的邻接矩阵是对称的,因此如果存在节点u到节点v的边,那节点v 节点u的边也一定存在。

3、有向图:图的邻接矩阵是非对称的,因此如果存在。。。并不一定存在。。。

猜你喜欢

转载自www.cnblogs.com/bzywns/p/9586052.html