数据结构和算法基础知识点
Posted bzywns
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构和算法基础知识点相关的知识,希望对你有一定的参考价值。
数据结构和算法基础知识点
链表
1、链表是一种由节点组成的线性数据集合,每个节点通过指针指向下一个节点。它是 一种由节点组成,并能用于表示序列的数据结构。
2、单链表:每个节点仅指向下一个节点,最后一个节点指向空
3、双链表:每个节点有两个指针p,n。p指向前一个节点,n指向下一个节点,最后一个 节点指向空。
4、循环列表:每个节点指向下一个节点,最后一个节点指向第一个节点。
5、时间复杂度:索引:O(n),查找:O(n),插入:O(1),删除:O(1)
栈
1、栈是一个元素集合,支持两个基本操作:push用于将元素压入栈,pop用于删除栈顶元素。
2、后进先出的数据结构
3、时间复杂度:同上
队列
1、队列是一个元素集合,支持两种基本操作:enqueue用于添加一个元素到队列, dequeue用于删除
2、先进先出的数据结构
3、时间复杂度:同上
树
1、树是无向的联通的无环图
2、二叉树:是一个树形数据结构,每个节点最多可以有两个子节点,称为左子节点和 右子节点。
3、满二叉树:二叉树中每个节点有0或者2个子节点。
4、完美二叉树:二叉树中每个节点有两个子节点,并且所有的叶子节点的深度是一样 的
5、完全二叉树;二叉树中除最后一层外,其他各层的节点数均达到最大值,最后一层 的节点都连续集中在最左边。
二叉查找树
1、是一种二叉树,其任何节点都大于等于左子树中的值,小于等于右子树中的值。
2、时间复杂度:索引查找插入删除均为O(log(n))
字典树
1、又称为基数树或前缀树,是一种用于存储键值为字符串的动态集合或关联数组的查 找树。树中的节点并不直接存储关联键值,而是该节点在树中的位置决定了其关联 键值,一个节点的所有子节点都有相同的前缀,根节点则是空字符串。
数状数组
1、又称为二进制索引树,其概念上是树,但以数组实现,数组中的下标代表树中的节 点,每个节点的父节点或子节点的下标可以通过运算获得。数组中的 每个元素都 包含了预计算的区间值之和,在整个树更新的过程中,这些计算的值也同样会被更 新。
2、时间复杂度:区间求和:O(log(n)),更新:O(log(n))
线段树
1、线段树是用于存储区间和线段的树形数据结构。它允许查找一个节点在若干条线段 中出现的次数。
2、时间复杂度:同上
堆
1、堆是一种基于树的满足某些特征的数据结构,整个堆中的所有父子节点的键值都满 足相同的排序条件。堆分为最大堆和最小堆。在最大堆中,父节点的键值永远大于 所有子节点键值,根节点的键值是最大的。最小堆中,父节点的键值永远小于子节 点键值,根节点的键值是最小的。
2、时间复杂度:索引查找插入删除:同上,删除最大最小:O(1)
哈希
1、哈希用于将任意长度的数据映射到固定长度的数据。哈希函数的返回值被称为哈希 值哈希码或者哈希。如果不同的主键得到相同的哈希值,则发生了冲突。
2、Hash Map:hashmap是一个存储键值关系的数据结构,hash map通过哈希函数将键 值转化为桶或者槽中的下标,从而便于指定值的查找。
3、冲突解决:链地址法:在链地址法中,每个桶是相互独立的,每个索引对应一个元 素列表。处理hashmap的时间就是查找桶的时间与遍历列表元素的时间之和。
开放地址法:在开放地址法中,当插入新值时,会判断该值对应的哈希桶是否存在, 如果存在则根据某种算法依次选择下一个可能的地址,直到找到一个未被占用 的地址。开放地址即某个元素的位置并不永远由其哈希值决定。
图
1、图是G=(V,E)的有序对,其包括顶点或节点的集合V以及边或弧的集合E,其中E包 括了两个来自V的元素。
2、无向图:图的邻接矩阵是对称的,因此如果存在节点u到节点v的边,那节点v到 节点u的边也一定存在。
3、有向图:图的邻接矩阵是非对称的,因此如果存在。。。并不一定存在。。。
以上是关于数据结构和算法基础知识点的主要内容,如果未能解决你的问题,请参考以下文章