-
数组地址的计算
1维数组,默认是行优先,也就是先横着放。
2位数组行优先,相当于最外围数组横着放,列优先就是最里面的先横着放。
-
稀疏矩阵图(没懂)
-
顺序表和链表
队列有头尾节点的目的是为了和中间节点一样操作统一。
-
顺序储存和链式存储的比较
-
队列与栈
重点:循环队列,的头指针指好尾部指针在空队列和满队列的时候都相等,所以一般环形队列回空最后一格,一边区分队列是否为空 -
广意表
重点:广义表的表头是第一个元素,表尾是剩下的所有元素 -
二叉树的一些概念
-
二叉树的一些性质(后面2条没懂)
-
二叉树的遍历
重点:
前序遍历: 先访问根,在访问左,然后访问右中序遍历:在访问左,先访问根,,然后访问右
后序遍历:在访问左,,然后访问右,先访问根
层次遍历:按照深度,从左到右,遍历完整层。
-
反向构造二叉树
重点:知道中序和 前序或者后序就能知道一棵树的 节点顺序
第一步通过 前序节点第一个是根节点,然后就可以把中序节点分左右两树。
第二步通过左数去前序中找 HBEDF 的那一块,发现B是第一个,所以B 左树的根节点可以把 HBEDF分成左右两个子树,后面一次类推,后序遍历相反。
我们可以发现不管是前序,中序,后序,半边树的节点都是在一起的,只是顺序不一样。 -
树转二叉树
重点:兄弟节点用线链接,子节点除了第一个线都断开,我们就可以把一个树装换成2叉树 -
查找二叉树 又称 排序二叉树
重点:所有的左子树节点小于根节点,所有的的右树节点大于根的二叉树叫做 排序二叉树
-
哈夫曼树(最优二叉树)
重点:
树的路径长度:根节点到叶子节点经过的分支的个数。
权:路径长度乘叶子节点的数值哈夫曼树的定义:相同叶子节点构成的树中,带权路径最短的树就是哈夫曼树
哈夫曼树是怎么生成的:
在集合中挑出最小的两个元素,小的在左边,大的在右,两个的和作为根节点,然后把它放回原集合(根节点当做一个元素),重复找出最小的两个,组成树在放回,直到只剩最后一课树。就生成了了哈夫曼树。
-
线索二叉树
线索二叉树:把所有没有两个叉的节点,补全上下节点关系,前面的用绿色的线索,后面的用红色的用线索。红色,缺左节点的补绿色线索,缺右节点的补红色线索。 -
平衡二叉树
平衡度: 左边节点深度减去右边节点的深度平衡二叉树:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
-
图的基本概念
完全图:任意两个节点之间都有连线
图的存储
第一种:邻接矩阵(二维矩阵中1表示两个节点之间有连线)
第二种:邻接表(数组+链表)邻接表方式,里面的链表可以存储变边长。
-
图的遍历
-
图的拓扑排序
-
最小生成树
树和图的区别:树没有环路,图有,n个节点的树最多有n-1条表。图最少有n条边。
最小生成树:把图的一些边删除,一些留下,并且所有节点都连在一起,留下的边的边长之和最小的树,就是最小生成树。最小生成树算法-普里姆算法:选一个节点最为红点,然后算出选一个能和它相连的节点并且距离最小的连线,然后以这个两个点为基础,继续找连线最短的下一个节点。
最小生成树算法-克鲁斯卡尔算法:先找最短的两条边,然后再找次短的条边,如果有2条就都连上,前提是不能让它形成环,直到所有节点都相连。
-
算法的特性
-
算法的复杂度
一些算法的时间复杂度 ,下面图希尔算法的时间复杂度有问题
-
排序算法的分类
不稳定排序算法,指的是排序以后同值的元素的前后顺序有可能改变.
内排序和外排序,内排序在内存中进行,外排序会使用到外部存储。-
插入排序
重点:外层循环维持当前遍历位置,内层循环找出插入位置。
-
-
希尔排序(分组插入排序)
重点:分组进行插入排序,在一轮循环内,各组的数据不会有关联。可以充分的利用多核CPU提高效率,并且减少插入排序时间随着集合指数增加的问题。 -
选择排序
重点:外层循环维持当前遍历的位置,内层循环选择剩下值中最小的值。
-
堆排序概念
堆的概念:树中所有非终端结点的值均不大于(或不小于)其左右孩子的结点的值,对应的堆称为「 小顶堆 」(或「 大顶堆 」)
-
堆的初建过程
堆排序的时间复杂度是忽略了建立堆的时间的。 -
堆排序取出堆顶节点以后,堆的变化
-
冒泡排序
重点:相邻对比,把较大的向上面顶,一轮下来,顶到最上面的那个就是最大值。
-
快速排序
重点,选择一个基准,一般是第一个元素,和另外一段最后一个元素做比较,如果不是升序就交换,如果是就换换靠近基准的另外一个元素对比,重复上面步骤,直到基准把集合分成一份大于它的,一份小于它的值。然后对两边分别进行排序。直到整个集合有序。
-
-
归并排序
两两一组排序,然后两两合并,重复两两合并。直到合成一个新的有序集合。
合并的过程需要注意,有连个指针分别指向两个集合的最低位。 -
基数排序
重点:先按照个位排序,然后然后十位排序,然后按照百位排序,一次类推
-
排序算法的时间复杂度