当前位置: 首页 > news >正文

尝试在软考61天前开始成为软件设计师-数据结构算法

数组与矩阵

存储地址的计算

a[n]   存储地址 : a+i*len

a[m][n]   存储地址:按行存储 : a+(i*n+j)*len

                按列存储: a+(j*m+i)*len  

例: 五行五列的a.各元素占2个字节  a[2][3]按行优先的存储  (2*5+3)*2

稀疏矩阵

  • 上三角矩阵对应的一维数组下标计算(2n-i+1)*i/2+j
  • 下三角矩阵        (i+1)*i/2+j

线性表

  • 顺序表
  • 链表
    • 单链表
    • 循环链表      尾指针指向头
    • 双向链表      有指向前后的指针

链表操作:

  • 单链表删除:   先q->next =a2 (备份); 更改要删除的a2-->a3
  • 单链表插入:   
  • 双向链表删除:
  • 双向链表插入:
顺序存储链式
空间性能存储密度=1,优  100%数据<1

容量分配

实现缺点动态改变,优
时间性能查找运算O(n/2),略优O(n/2)
O(1)优O([n+1]/2),1~n
插入O(n/2),0~n ,后面补齐O(1)优
删除O([n-1]/2)   ,后面补齐O(1),优

栈-先进先出

队列-先进先出

循环队列:   空时 : head=tail;  满时:(tail+1)%size=head

循环队列一个空间不存东西--head=tail空时那个

广义表

通常以递归的方式定义

表里有字表

长度: 最外层表有多少元素

深度 :递归的重数

-LS1= (a,(b,c),(d,e)),长度为3,深度为2

基本运算: 取表头head(Ls),取表尾(tail(Ls)) 表尾除表头外的所有元素!

-如何取出LS1的b?   LS1= (a,(b,c),(d,e))

head(head(tail(Ls)))

树(无环路)

  • 结点的度:结点的孩子结点数
  • 树的度:   结点的度最高
  • 叶子结点: 末端结点,度=0
  • 分支结点:
  • 内部节点:   并非根节点&叶子结点
  • 父节点,子节点 相对概念
  • 兄弟结点:  同一层,同一个父亲

二叉树

  • 满二叉树: 每层没有缺失的部分
  • 完全二叉树:除了最下面一层,从左到右,上面都是完整的
      
  • 非完全二叉树

重要特性!

二叉树第i层上 最多2^{i-1}

深度k的二叉树 最多2^{k-1}

叶子结点 = 度为2结点数+1

有n个结点的完全二叉树,从第一层~第log2n +1层 有任意一个结点i

if 2i>n   : i为叶子结点

左子节点/2 ->父节点

(右子结点-1)/2->父节点 

二叉树遍历

  • 前序遍历 --根-左-右-12457836
  • 中序遍历--左--右-42785136
  • 后序遍历--左-右--48752631
  • 层次遍历-12345678

反向构造二叉树

前序ABHFDECG

中序HBEDFAGC

一般给2种序列反向构造

树转二叉树

孩子-->结点

兄弟-->结点

 查找二叉树

....未完待续

排序&查找

常见的算法

相关文章:

  • 内核编程十:进程的虚拟地址空间
  • Docker Hub Mirror 终极解决方案——0成本,超高速!
  • RAG优化:python从零实现时间管理大师Self-RAG
  • 红宝书第十二讲:详解JavaScript中的工厂模式与原型模式等各种设计模式
  • 第八章:防火墙
  • [实操]Mysql8 InnoDB引擎主从配置三节点操作流程
  • 论文阅读笔记:Denoising Diffusion Implicit Models
  • 消息队列ActiveMQ、RabbitMQ、RocketMQ、Kafka对比分析和选型
  • 【杂谈】Godot4.4 对象池(附脚本)
  • 盖泽 寻边器 帮助类
  • 开发中后端返回下划线数据,要不要统一转驼峰?
  • 【HTML5游戏开发教程】零基础入门合成大西瓜游戏实战 | JS物理引擎+Canvas动画+完整源码详解
  • C# BULK INSERT导入大数据文件数据到SqlServer
  • centos7.9镜像源及Python引入ssl问题处理
  • OLED中英文混合显示
  • 如何设计一个处理物联网设备数据流的后端系统。
  • SpringMVC 配置详解
  • 《深度剖析:DevEco Studio 如何实现人工智能模型的高效可视化开发》
  • 交换机(access端口)
  • Vue中的状态管理器Vuex被Pinia所替代-上手使用指南
  • 戴上XR头盔,五一假期在上海也能体验“登陆月球”
  • 视频丨英伟达总裁黄仁勋:美勿幻想AI领域速胜中国
  • 大学2025丨对话深大人工智能学院负责人李坚强:产学研生态比“造天才”更重要
  • 证监会:坚决拥护党中央对王建军进行纪律审查和监察调查决定
  • 经营业绩持续稳中向好,国铁集团2024年度和2025年一季度财务决算公布
  • 笔墨如何“构城”?上海美院城市山水晋京展出