首页 > 其他分享 >数据结构

数据结构

时间:2023-02-18 18:56:03浏览次数:26  
标签:遍历 最小 算法 数据结构 二叉树 排序 节点

  1. 数组地址的计算
    1维数组,默认是行优先,也就是先横着放。
    2位数组行优先,相当于最外围数组横着放,列优先就是最里面的先横着放。

  2. 稀疏矩阵图(没懂)

  3. 顺序表和链表
    队列有头尾节点的目的是为了和中间节点一样操作统一。

    image-20230216210458524
    image-20230216210544259

  4. 顺序储存和链式存储的比较

    image-20230216211309036

  5. 队列与栈
    重点:循环队列,的头指针指好尾部指针在空队列和满队列的时候都相等,所以一般环形队列回空最后一格,一边区分队列是否为空

    image-20230216212217006

  6. 广意表
    重点:广义表的表头是第一个元素,表尾是剩下的所有元素

    image-20230216215155232

  7. 二叉树的一些概念

    image-20230216223733687

  8. 二叉树的一些性质(后面2条没懂)
    image-20230216223823825

  9. 二叉树的遍历

    重点:
    前序遍历: 先访问根,在访问左,然后访问右

    中序遍历:在访问左,先访问根,,然后访问右
    后序遍历:在访问左,,然后访问右,先访问根
    层次遍历:按照深度,从左到右,遍历完整层。
    image-20230216224640537

  10. 反向构造二叉树
    重点:知道中序和 前序或者后序就能知道一棵树的 节点顺序
    第一步通过 前序节点第一个是根节点,然后就可以把中序节点分左右两树。
    第二步通过左数去前序中找 HBEDF 的那一块,发现B是第一个,所以B 左树的根节点可以把 HBEDF分成左右两个子树,后面一次类推,后序遍历相反。
    我们可以发现不管是前序,中序,后序,半边树的节点都是在一起的,只是顺序不一样。

    image-20230216225609412

  11. 树转二叉树
    重点:兄弟节点用线链接,子节点除了第一个线都断开,我们就可以把一个树装换成2叉树

  12. 查找二叉树 又称 排序二叉树
    重点:所有的左子树节点小于根节点,所有的的右树节点大于根的二叉树叫做 排序二叉树
    image-20230216232442794

  13. 哈夫曼树(最优二叉树)

    重点:
    树的路径长度:根节点到叶子节点经过的分支的个数。
    权:路径长度乘叶子节点的数值

    哈夫曼树的定义:相同叶子节点构成的树中,带权路径最短的树就是哈夫曼树

    哈夫曼树是怎么生成的:

    在集合中挑出最小的两个元素,小的在左边,大的在右,两个的和作为根节点,然后把它放回原集合(根节点当做一个元素),重复找出最小的两个,组成树在放回,直到只剩最后一课树。就生成了了哈夫曼树。

    image-20230216232630724

  14. 线索二叉树
    线索二叉树:把所有没有两个叉的节点,补全上下节点关系,前面的用绿色的线索,后面的用红色的用线索。红色,缺左节点的补绿色线索,缺右节点的补红色线索。

    image-20230217195825223

  15. 平衡二叉树
    平衡度: 左边节点深度减去右边节点的深度

    平衡二叉树:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
    image-20230217201312731

  16. 图的基本概念

    完全图:任意两个节点之间都有连线
    image-20230217205336376
    图的存储
    第一种:邻接矩阵(二维矩阵中1表示两个节点之间有连线)

    image-20230217205528262
    第二种:邻接表(数组+链表)

    邻接表方式,里面的链表可以存储变边长。
    image-20230217205639282

  17. 图的遍历
    image-20230217210340816

  18. 图的拓扑排序

    image-20230217212835029

  19. 最小生成树

    树和图的区别:树没有环路,图有,n个节点的树最多有n-1条表。图最少有n条边。
    最小生成树:把图的一些边删除,一些留下,并且所有节点都连在一起,留下的边的边长之和最小的树,就是最小生成树。

    最小生成树算法-普里姆算法:选一个节点最为红点,然后算出选一个能和它相连的节点并且距离最小的连线,然后以这个两个点为基础,继续找连线最短的下一个节点。

    image-20230217214637367

最小生成树算法-克鲁斯卡尔算法:先找最短的两条边,然后再找次短的条边,如果有2条就都连上,前提是不能让它形成环,直到所有节点都相连。
image-20230217214547369

  1. 算法的特性
    image-20230218145048053

  2. 算法的复杂度
    image-20230218145909616

    一些算法的时间复杂度 ,下面图希尔算法的时间复杂度有问题

    img

  3. 排序算法的分类

    不稳定排序算法,指的是排序以后同值的元素的前后顺序有可能改变.
    内排序和外排序,内排序在内存中进行,外排序会使用到外部存储。

    image-20230218155344595

    1. 插入排序
      重点:外层循环维持当前遍历位置,内层循环找出插入位置。

      image-20230218160720149

  4. 希尔排序(分组插入排序)
    重点:分组进行插入排序,在一轮循环内,各组的数据不会有关联。可以充分的利用多核CPU提高效率,并且减少插入排序时间随着集合指数增加的问题。

    image-20230218162600708

  5. 选择排序

    重点:外层循环维持当前遍历的位置,内层循环选择剩下值中最小的值。
    image-20230218164610521

  6. 堆排序概念

    堆的概念:树中所有非终端结点的值均不大于(或不小于)其左右孩子的结点的值,对应的堆称为「 小顶堆 」(或「 大顶堆 」)image-20230218171231828

  7. 堆的初建过程
    堆排序的时间复杂度是忽略了建立堆的时间的。image-20230218171356324

  8. 堆排序取出堆顶节点以后,堆的变化
    image-20230218171508162

  9. 冒泡排序

    重点:相邻对比,把较大的向上面顶,一轮下来,顶到最上面的那个就是最大值。
    image-20230218173810525

    1. 快速排序
      重点,选择一个基准,一般是第一个元素,和另外一段最后一个元素做比较,如果不是升序就交换,如果是就换换靠近基准的另外一个元素对比,重复上面步骤,直到基准把集合分成一份大于它的,一份小于它的值。然后对两边分别进行排序。直到整个集合有序。

      image-20230218174352580

  10. 归并排序
    两两一组排序,然后两两合并,重复两两合并。直到合成一个新的有序集合。
    合并的过程需要注意,有连个指针分别指向两个集合的最低位。

    image-20230218181058118

  11. 基数排序
    重点:先按照个位排序,然后然后十位排序,然后按照百位排序,一次类推
    image-20230218182656105

  12. 排序算法的时间复杂度

    image-20230218184220838

标签:遍历,最小,算法,数据结构,二叉树,排序,节点
From: https://www.cnblogs.com/cxygg/p/17133290.html

相关文章

  • [数据结构] AVL树
    AVL树的基本概念AVL树的定义AVL树得名于它的发明者G.M.Adelson-Velsky和E.M.Landis。AVL树本质上是一颗二叉搜索树,并且本身带有平衡的条件,即每个结点的左右子树的高......
  • 数据结构可视化神器推荐
    旧金山大学做的BPlusTreeVisualization模型​​数据结构可视化​​......
  • 数据结构刷题2023.02.18小记
    连通分量一个无向图的连通分量是其极大的连通子图无向图中任意两个节点之间有连通,则称为连通图。每一个非连通图可分为几个极大连通部分,每一个极大连通子图称为连通分量;......
  • 数据结构 -- 景区旅游信息管理系统
    景区旅游信息管理系统【问题描述】在旅游景区,经常会遇到游客打听从一个景点到另一个景点的最短路径和最短距离,这类游客不喜欢按照导游图的线路来游览,而是挑选自己感兴趣的景......
  • 数据结构--顺序线性表
    #include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>usingnamespacestd;#defineOK1#defineERROR-1#defineLIST_INIT_SIZE100#defineLISTSIZ......
  • 数据结构--基本概念及术语
    1. 数据:是对客观事物的符号表示,在我们计算机科学中是指所有能输入到计算机中,并能够被计算机程序处理的符号总称。他是计算机程序加工的“原料”。比如说,一个利用数值分......
  • 数据结构--线性表
    线性表最简单也是最常用的一种数据结构,它的特点是,在数据元素的非空有限集中,(1)存在唯一一个被称为“第一个”的数据元素,存在唯一一个被称为“最后一个”的数据元素。(2)除了第......
  • linux源码解析12–page数据结构
    几个问题:1.当开启了MMU之后,CPU访问内存的最小单位是多少呢?page2.linux怎样描述这个页呢?3.linux内核里,怎么理解和使用这个页?linux内核用stuctpage来描述一个物理页面:1......
  • 数据结构个人学习推荐
    目录学好这门课的重要性学习方法多看图例并动笔画图步步为营且不断重复Showmeyourcode!尝试输出所学知识常见的问题C都还给老师了,还需要返工吗?需不需要先学某门语言再......
  • java的集合以及数据结构
    一、集合1、介绍红色为接口蓝色为实现类2、三种遍历方式迭代器增强forlambda表达式Integer[]arr=col.toArray(newInteger[col.size()]);......