【软考程序员学习笔记】——数据结构与算法基础

这篇具有很好参考价值的文章主要介绍了【软考程序员学习笔记】——数据结构与算法基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【软考程序员学习笔记】——数据结构与算法基础,软考程序员学习笔记,学习,笔记,计算机

【软考程序员学习笔记】——数据结构与算法基础,软考程序员学习笔记,学习,笔记,计算机

目录

 🍊一、数据结构概念和分类

🍊二、数组特点&存储方式

🍊三、矩阵

特殊矩阵

非特殊矩阵

🍊四、栈和队列

🍊 五、二叉树的性质

🍊六、二叉树的遍历

(1)前序遍历(先根遍历,先序遍历)

(2)中遍历(中根遍历)

(3)后序遍历(后根遍历,后序遍历)

🍊七、二叉排序树

🍊八、最优二叉树/哈夫曼树

🍊九、完全图和连通图

🍊十、图和矩阵的转化

🍊十一、查找算法


 一、数据结构概念和分类

结构:结构是指元素之间的关系。

逻辑结构:元素之间的相互关系称为数据的逻辑结构,可划分为线性结构非线性结构

常用的线性结构有:线性表,栈,队列、数组和串

常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图

存储结构:数据元素及元素之间关系的存储形式称为存储结构,可分为顺序存储链接存储两种其本方式。

顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的

链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针

二、数组特点&存储方式

数组特点:数据元素数目固定。数据元素具有相同的类型。数据元素的下标关系具有上下界的约束且下标有序。

【软考程序员学习笔记】——数据结构与算法基础,软考程序员学习笔记,学习,笔记,计算机

 其中:len表示单个元素所占用的存储单元

三、矩阵

特殊矩阵

三角矩阵:非零元素集中在矩阵的对角线的一边,包括上三角矩阵下三角矩阵

对角矩阵:矩阵中的非零元素都集中在以主对角线为中心的带状区域中

对称矩阵/反对称矩阵:Ann中的元素具有ai=ap的特点,则称之为阶对称矩阵。Ann中的元素具有aij=-a的特点,则称之为阶反对称矩阵

非特殊矩阵

稀疏矩阵:非零元素的个数远远少于零元素的个数,且非零元素的分布没有规律;对于稀疏矩阵,存储非零元素时必须同时存储其位置(即行号和列号),所以三元组(i,i,ai)可唯一确定矩阵中的一个元素。

四、栈和队列

栈是只能在一端进行插入和删除操作的线性表,其中允许插入和删除的一端叫做栈顶,另一端叫做栈底。栈是一种后进先出(LIFO)的数据结构先入栈的元素要比后入栈的元素后出栈。故将一串数据全部入栈后再全部出栈,数据的次序将前后颠倒

栈主要应用于函数调用或中断调用过程中

队列是只能在一端插入,在另一端删除的线性表,其中允许插入元素的一端称为队列头或队头,允许删除元素的一端称为队列尾或队尾。队列是一种先进先出(FIFO)的数据结构,先入队列的元要先于后入队列的元素出队列。故一串数据无论以何种操作次序通过队列,其次序都不会发生变化。

循环队列:

队空条件:head=tail

队满条件:(tail+1)%size=head

队列长度:(tail-head+size)%size

循环队列的优点:入队和出队操作都不需要移动队列中的其他元素

 五、二叉树的性质

(1)在二叉树的第i层上最多有2i-1个结点(i≥1);

(2)深度为k的二叉树最多有2k1个结点(k≥1);

(3)叶子结点数为no,度为2的结点数为n2,则no=n2+1

(4)如果对一棵有n个结点的完全二叉树的结点按层序编号(从第1层到Llogn+1层,每层从左到右),
则对任一结点i(1≤i≤n),有:

如果i=1,则结点i无父结点,是二叉树的根;如果i>1,则父结点是Li/2j;

如果2i>n,则结点i为叶子结点,无左子结点:否则,其左子结点是结点2i:

如果2i+1>n,则结点i无右子叶点,否则,其右子结点是结点2i+1。

六、二叉树的遍历

(1)前序遍历(先根遍历,先序遍历)

首先访问根结点,然后前序遍历根结点的左子树,最后再前序遍历根结点的右子树

(2)中遍历(中根遍历)

首先中序遍历根结点的左子树,然后访问根结点,最后再中序遍历根结点的右子树

(3)后序遍历(后根遍历,后序遍历)

首先后序遍历根结点的左子树,然后后序遍历根结点的右子树,最后再访问根结点

二叉树可用来描述算术表达式,此时对二叉树的先序、中序和后序遍历序列分别对应了表达式的前级表示(波兰式)、中缀表示和后缀表示(逆波兰式)。

七、二叉排序树

二叉排序树(BinarySortTree)又称为二叉搜索树,或者是一棵空树,或者是具有下列性质的二叉树:

(1)若左子树不空,则左子树上所有结点的值均小于根结点的值

(2)若右子树不空,则右子树上所有结点的值均大于根结点的值

(3)左右子树也都是二叉排序树

二叉排序树的中序遍历是一个递增的序列

八、最优二叉树/哈夫曼树

树中连接两个结点之间的分支数目称为此两结点的路径长度,结点的带权路径长度为从树根到该结点之间的路径长度与该结点上权的乘积,树的带权路径长度是指从树的根结点到其他各个结点的路径长度之和,带权路径长度最小的二叉树称为最优二叉树或哈夫曼树

九、完全图和连通图

完全图:在无向图中,若每对顶点之间都有一条边相连,则称该图为完全图(completegraph)。在有向图中,若每对顶点之间都有二条有向边相互连接,则称该图为完全图

连通图:指任意两个结点之间都有一个路径相连

十、图和矩阵的转化

邻接矩阵可简化为一个nxn的二维数组,假设数组为A[1n,.n],则数组元素Ai,i]描述了顶点i与顶
点i之间的相邻信息,即此二顶点之间的边或弧信息。在“图”中,数组元素分别使用1和0描述顶点之间是否相邻。

十一、查找算法

排序总表:

【软考程序员学习笔记】——数据结构与算法基础,软考程序员学习笔记,学习,笔记,计算机


 文章来源地址https://www.toymoban.com/news/detail-521970.html

到了这里,关于【软考程序员学习笔记】——数据结构与算法基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《黑马程序员2023新版黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop、Hive,云平台实战项目》学习笔记总目录

    本文是对《黑马程序员新版大数据入门到实战教程》所有知识点的笔记进行总结分类。 学习视频:黑马程序员新版大数据 学习时总结的学习笔记以及思维导图会在后续更新,请敬请期待。 前言:配置三台虚拟机,为集群做准备(该篇章请到原视频进行观看,不在文章内详细

    2024年02月03日
    浏览(29)
  • 算法+数据结构=程序,程序员怎样才能学好算法?

    🌹欢迎来到 爱书不爱输的程序猿 的博客, 本博客致力于知识分享,与更多的人进行学习交流 🚩🚩🚩 点击直达福利 数据结构和算法是计算机科学的基石,是计算机的灵魂,要想成为计算机专业人员,学习和掌握算法是十分必要的。 计算机科学家尼古拉斯·沃斯在计算机领

    2024年02月04日
    浏览(26)
  • 程序员有必要参加软考吗?

      作为程序员,如果一直从事着前线的编程工作,是否会对身体造成负担,难以持续到35岁呢?毕竟在项目赶期时,工作强度很高,而技术也在不断变化,因此很多程序员在30岁前就开始转型。我曾见过很多焦虑自己职业生涯未来发展的新人,他们认为自己不能一直从事编程工

    2024年02月14日
    浏览(30)
  • 软考初级程序员上午单选题(10)

    36、测试用例由测试输入数据和与之对应的预期输出结果组成。人们常用白盒法和黑盒法设计测试用例,其中白盒法主要是为了检查______等。 A.是否有错误的功能或遗漏的功能 B.性能是否能够接受 C.是否有数据结构或外部数据库访问错误 D.程序内部结构是否有效 37、关于

    2024年02月05日
    浏览(24)
  • 软考初级程序员上午单选题(14)

    36、下列有关目录结构的叙述中,正确的是______。 A.一个磁盘有且仅有一个根目录 B.一个磁盘可以有多个根目录 C.一个磁盘不允许有3级以上的子目录 D.一个磁盘必须有根目录和子目录 37、软件开发过程中为确保软件质量所采取的措施中,不包括______。 A.开发前应选定或

    2024年02月05日
    浏览(25)
  • 解密算法与数据结构面试:程序员如何应对挑战

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月11日
    浏览(27)
  • 有哪些数据结构与算法是程序员必须要掌握的?——“数据结构与算法”

    作为IT程序员,学习算法的原因主要有以下几点: 提升问题解决能力:算法可以帮助程序员分析、优化和解决复杂问题。了解算法原理和实现方式将有助于程序员更快地找到合适的解决方案。这对于解决实际工作中的问题是非常有帮助的。 提高代码效率:通过学习不同的算法

    2024年02月13日
    浏览(17)
  • 学习笔记-微服务基础(黑马程序员)

    spring cloud spring cloud alibaba eureka-server 注册中心 eureka-client 客户端 每30s发送心跳 服务 服务消费者 服务提供者 依赖 启动类 添加注解 @EnableEurekaServer 配置文件 application.yml 依赖 配置文件 application.yml 添加注解 @LoadBlanced 修改url 自定义负载均衡策略 1、定义新的IRule,将轮询策略(

    2024年04月13日
    浏览(29)
  • 学习笔记-微服务高级(黑马程序员)

    测试软件 jmeter 雪崩问题 个微服务往往依赖于多个其它微服务,服务提供者I发生了故障,依赖于当前服务的其它服务随着时间的推移形成级联失败 超时处理 设定超时时间,请求超过一定时间没有响应就返回错误信息 仓壁模式 限定每个业务能使用的线程数,避免耗尽整个tom

    2024年04月25日
    浏览(28)
  • SpringBoot-黑马程序员-学习笔记(三)

    目录 30.springboot整合MyBatis-plus 32.SSM整合 38.MP中的条件查询 小知识:许多放在类前面的注解,比如@Mapper,@Service都是将该类定义成一个Bean,交给spring管理 39.Service模块 1.创建普通springboot项目,勾选Mysql 框架 2.在pom包里面导入mybatis-plus的坐标 3.把数据层的类继承BaseMapper这个接口

    2024年02月07日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包