408之数据结构DS概念记忆总结

  • 1、线性表
  • 2、栈和队列
  • 3、串
  • 4、树
    • 4.1、树的性质
    • 4.2、二叉树的性质
    • 4.3、满二叉树的性质
    • 4.4、线索二叉树的性质
    • 4.5、二叉排序树的性质
    • 4.6、平衡二叉树的性质
    • 4.7、哈夫曼树的性质
    • 4.8、树与森林的转换
  • 5、图
    • 5.1、顶点的度
    • 5.2、连通与强连通
    • 5.3、图的存储
    • 5.4、图的遍历
    • 5.5、最小生成树的构造
    • 5.6、最短路径
  • 6、查找
    • 6.1、折半查找
    • 6.3、红黑树
    • 6.4、B树与B+树
  • 7、排序
    • 7.1、插入排序
      • 7.1.1、直接插入排序
      • 7.1.2、折半插入排序
      • 7.1.3、希尔排序
    • 7.2、交换排序
      • 7.2.1、冒泡排序
      • 7.2.2、快速排序
    • 7.3、选择排序
      • 7.3.1、简单选择排序
      • 7.3.2、堆排序
    • 7.4、归并排序
    • 7.5、基数排序

1、线性表

  1. 算法原地工作的含义是:算法需要的辅助空间是常量,即O(1)
  2. (在相同规模n下),复杂度为O(n)的算法在时间上总是优于复杂度为O(n2)的算法。

O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)O(1)<O(log_2n)<O(n)<O(nlog_2n)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n) O(1)<O(log2​n)<O(n)<O(nlog2​n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

  1. 时间复杂度:O(F(n))意味着算法在最坏情况下,问题规模为n的前提下,所花费的时间≤C×F(n),其中C是常数。

    • 某算法的时间复杂度为O(n2),问题规模也是n,因为问题规模是在描述时间复杂度之前就已经规定好了。
    • 某算法的时间复杂度为O(n2),其实就是说算法的执行时间≤Cn2,也就是执行时间与n2成正比
  2. 编译解释可统称为翻译
    • 编译:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需翻译一次,会产生中间文件)
    • 解释:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译,不会产生中间文件)
    • 语言级别越高,执行效率越低

  1. 算法的时间复杂度取决于:问题的规模数据的状态(例如正序、逆序的数据元素)

    • 加法规则:多项相加,只保留最高阶的项,且系数变为1 O(m)+O(n)=O(max{m,n})
    • 乘法规则:多项相乘,都保留 O(m)×O(n)=O(mn)
  2. 线性表:相同数据类型、有限数据元素、序列

    • 线性表可以为空
    • 线性表中的元素可以是无序
  3. 顺序表三大操作

操作 平均比较次数(平均移动元素) 时间复杂度
插入操作 n/2 O(n)
删除操作 (n-1)/2 O(n)
查找操作(按值查找) (n+1)/2 O(n)
  1. 顺序表的元素地址必须是连续的,单链表的结点内存储单元地址必须是连续的。

    • 单链表各个不同结点的存储空间可以不连续,但是结点内的存储单元地址必须连续(也就是data和next指针占有的空间必须是连续的)。
    • 顺序表既可以顺序存取,也可以随机存取。链表只能进行顺序存取。
      • 随机存取:想取哪个就取哪个,通过数组下标进行访问
      • 顺序存取:从第一个开始访问,依次向后访问
    • 链表插入和删除操作,只需要修改链表中结点指针的值,不需要移动元素就可以高效地实现插入和删除操作。链表采用链接方式存储线性表,适用于存储空间需求不确定的情形,不必事先估计存储空间。
    • 顺序表就是数组,实现随机存取,并且在最后位置插入、删除方便。
      • n个元素的顺序表中,第i个结点是a[i-1],最后一个结点是a[n-1],之所以说在最后位置插入、删除方便,是因为最后一个结点的后面我们仍然可以直接访问到。
      • a【0】是首地址Loc(L),则第n个元素地址 = 首地址Loc(L) + (n-1)×数据元素大小

    • 链表和顺序表所需要的空间都与线性表长度成正比
    • 若要交换元素的值,例如交换第3个和第4个元素的值。在顺序表中,直接对3、4号元素的值进行更改,但是在链表中需要顺序访问1、2号元素的指针,才能找到3号数据的位置,进而再对3、4号元素的值进行修改。
    • 若要顺序输出线性表的中的值,那么顺序表和链表都是顺序读取,时间复杂度都是O(n)
    • 链式存储用指针表示逻辑结构,所以链式存储结构比顺序存储结构能更方便地表示各种逻辑结构,而顺序存储只能用物理上的邻接关系来表示逻辑结构。
// 双循环链表p后面跟一个就是指针,p后面跟两个就是结点的指针// s的右指针指向p
s->rlink = p;
// s的左指针指向p的左指针指向(也就是两个指针指向相同)
s->llink = p->llink;
// s的左结点的右指针指向s
p->llink->rlink = s;// p的下一个结点的前向指针指向p的前向指针的指向(也就是两个指针指向相同)
p->next->prev = p->prev;

做题画图必背

【向题看齐】408之数据结构DS概念记忆总结相关推荐

  1. 【向题看齐】408之计算机组成原理概念记忆总结

    408之计算机组成原理概念记忆总结 1.计算机系统概述 2.数据的表示和运算 2.1.进位计数制 2.3.定点数的表示 2.3.1.表示范围 2.4.定点数的计算 2.4.1.算数移位 2.4.2.逻 ...

  2. Oracle数据库:刷题错题本,数据库的各种概念

    Oracle数据库:刷题错题本,数据库的各种概念 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle ...

  3. 【数据结构总结】第一章:数据结构基本概念

    [数据结构总结]第一章:数据结构基本概念 本文主要是以思维导图的形式概括数据结构第一章的精华内容,基本不会用到文字性的内容,目的是为了给大家梳理每个重要的知识点的相关概念,方便大家在复盘的时候快速阅读 ...

  4. Python数据结构与算法(三)--数据结构的概念

    上一章我们看Python内置的模块可以测试代码的时间,有的代码执行时间短有的执行时间长,就是说效率不一样. 如果上面不明显的话,大家看下面两个方法.append() 和 insert(0) impor ...

  5. Python 刷题常用语法与数据结构汇总-2022.01.30

    [笔试]python刷题笔记(基础)! https://blog.csdn.net/a_123456598/article/details/105420802 python语法刷题 https://b ...

  6. (王道408考研数据结构)第三章栈和队列-第三节1:栈的应用之括号匹配问题和表达式问题(前缀、中缀和后缀)

    前面我们就说过,栈是一种先进后出的线性表,这种先进后出的特性就决定了它在一类场合或问题中会经常被用到--递归.考研数据结构中所涉及的利用栈结构解决递归问题或者考察栈结构特性的问题主要有这么几类 括号匹 ...

  7. 数据结构 (一) ----- 数据结构基本概念基于数组实现线性表

    相关文章: <数据结构 (一) ----- 数据结构基本概念&基于数组实现线性表> 文章目录 数据结构基本概念 一.逻辑结构 二.存储结构 三.数据结构定义 四.数据结构的通用的几 ...

  8. php ds扩展,PHP教程:老生常谈PHP中的数据结构:DS扩展

    <PHP教程:老生常谈PHP中的数据结构:DS扩展>要点: 本文介绍了PHP教程:老生常谈PHP中的数据结构:DS扩展,希望对您有用.如果有疑问,可以联系我们. PHP7以上才能安装和使用 ...

  9. 数据结构 基本概念(数据项--数据元素--数据对象-数据类型-抽象数据类型)

    //数据结构基本概念 #include<iostream> using namespace std;/* 数据 – 程序的操作对象,用于描述客观事物 数据的特点: 可以输入到计算机 可以被 ...

最新文章

  1. oracle查看数据库字符编码,oracle 查看、批改字符集编码
  2. 动力电池检测电压c语言编程,动力电池PACK EOL测试系统
  3. JS实例学习笔记——w3cschool+菜鸟教程
  4. 右键助手1.0正式版
  5. python封装成exe后运行失败_Python的带pandas包的程序封装成exe 2018-01-11
  6. 整数线性规划实现(lingo,python分枝界定法)
  7. azure云数据库_Azure SQL数据库上的透明数据加密(TDE)
  8. Linux 下安装Eclipse C++
  9. android文件管理器编写,Android编写文件浏览器简单实现
  10. 14. Thinking carefullly about copying behavior in resource-managing classes
  11. 微软推出python免费在线教程视频_重磅发布!微软推出 Python 短视频入门课,直冲 GitHub 热榜第一!...
  12. stm32F407 调试 LAN8720A ping不通问题解决
  13. 【考研】2021年哈尔滨工业大学计算机考研「复试」经验贴
  14. 图书管理系统数据库设计实验报告
  15. SeaweedFS基本介绍
  16. node.js学习笔记(8)--multer模块文件上传
  17. 详解VB对话框InputBox和MsgBox
  18. 1:72 美M26龙式重型坦克拖车
  19. Android--高效地加载大图片
  20. 元旦经典文案素材赏析

热门文章

  1. hive四种常见的join
  2. 考勤助手——时序图设计
  3. 采用morison方程基于matlab计算大直径波浪力,基于Morison方程分层积分计算悬浮隧道的波浪力...
  4. 网易邮箱发送失败的原因
  5. FluentScheduler介绍
  6. 互联网舆情监测软件哪些排名好详细
  7. Python练习题六
  8. 拿破仑的格言节选(含我的评论)
  9. 服务器断电后自动重启
  10. [附源码]计算机毕业设计springboot宁财二手物品交易网站