数据结构与算法
数组
a+(2*5+3)*2
a+(14-1)*2(没有用公式的方法)
稀疏矩阵
线性表
顺序存储与链式存储对比
顺序存储结构:
优点1:存储密度大,空间利用度高,比链式存储节约空间
优点2:存储操作上方便操作,顺序支持随机存取,查找和读取会比较容易
缺点1:插入或者删除元素时不方便,花费的时间更多
链式存储结构:
优点1:插入或删除时方便些,空间使用灵活
缺点1:存储密度小,空间利用度低
缺点2:查找会相较顺序存储方式复杂一些,花费的时间会更多
队列与栈
循环队列:
栈的存取顺序注意
广义表
例如:广义表LS1=(a,((b,c),d),(e,f))
长度:3 深度:3
长度是最外层元素个数,深度是定义中所含括号的重数(原子的深度为0,空表的深度为1)
树
树与二叉树
结点的度:结点的孩子数量
树的度:所有结点中,度数最高的,即为树的度
叶子结点:没有孩子的就是叶子结点
孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点
内部结点:既不是根结点,也不是叶子结点
兄弟结点:同一个父结点的子结点之间互为兄弟结点
层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推
树的高度或深度:树中节点的最大层次
满二叉树与完全二叉树
完全与非完全的区别:
完全:每一层从左至右依次排满,中间不准留空
非完全:反之
二叉树的遍历
前序遍历
中序遍历
后序遍历
层次遍历
反向构造二叉树
树转二叉树
查找二叉树(排序二叉树)
最优二叉树(哈夫曼树)
此图有错,权值应该左小右大
带权路径长度:树的路径长度*权
树的带权路径长度:所有带权路径长度加起来
例:
线索二叉树
平衡二叉树
因为查找(排序)二叉树有时候同样顺序的数值会构造出不同的树,有些很不平衡,会影响树的查找等效率,所以有了平衡二叉树
图
邻接矩阵
邻接表
图的遍历
拓扑排序
图的最小生成树
注意不要连成环了
算法
查找
顺序查找
时间复杂度:O(n)
二分查找(折半查找)
数组必须是有序数组才能用
时间复杂度:
例:要查找关键字17
注意:(1+12)/2=6.5结果是小数,这时候要看清题目有没有说明向上取整还是向下取整,如果没有说明,一般是向下取整
假设向下取整得到6,接下来因为6已经比较过了,所以是(1+5)/2而不是(1+6)/2
散列表
自定义函数或者其他规则进行存储
排序
·直接插入排序
·希尔排序
·直接选择排序
·堆排序
·冒泡排序
·快速排序
·归并排序
·基数排序
·排序算法的时间复杂度和空间复杂度