软考 中级软件设计师 考点知识点笔记总结 day04

文章目录

      • 软考2.0
        • 1、基本概念与三要素
          • 1.1、基本概念 数据元素、数据项
          • 1.2、数据结构三要素
          • 1.3、逻辑结构
          • 1.4 、物理结构
        • 2、算法
          • 2.1、算法五个特性
          • 2.2、算法效率的度量
        • 3、线性表


软考2.0

考点

一 基本概念与三要素 二算法 三线性表 四栈和队列 五 串、数组、矩阵和广义表 六、树和二叉树 七、图 八、查找 九、排序

1、基本概念与三要素

数据结构在学什么?

如何用程序代码将现实世界的问题信息化

如何用计算机高效地处理这些信息从而创造价值

人类社会三次浪潮 第一次浪潮 农业阶段 第二次浪潮 工业阶段 第三次浪潮 信息化阶段

什么是数据?

数据是信息的载体 是描述客观事物属性的数、字符及所有能输入到计算机中并被程序识别和处理的符号的集合。 数据是计算机程序加工的原料。

1.1、基本概念 数据元素、数据项

数据元素是数据的基本单位 一个数据元素可由若干数据项组成 数据项是构成数据元素的不可分割的最小单位

1.2、数据结构三要素

数据结构是相互之间存在一种或多种特定关系的数据元素的集合

数据结构的三要素 逻辑结构 物理结构(存储结构) 数据运算

1.3、逻辑结构

逻辑结构包含 集合 线性结构 树形结构 图形结构

集合 各个元素同属一个集合 别无其他关系

线性结构 数据元素之间是一对一的关系 除了第一个元素 所有元素都有唯一前驱 除了最后一个元素 所有元素都有唯一后继

树形结构 数据元素之间是一对多的关系

图结构 数据元素之间是多对多的关系

1.4 、物理结构

物理结构包含

  • 顺序存储 将逻辑上相邻的元素存储在物理位置上也相邻的存储单元
  • 链式存储 逻辑上相邻的元素 物理位置上可以不相邻
  • 索引存储 存储元素信息的同时 还建立附加的索引表
  • 散列存储 根据元素的关键字直接计算出该元素的存储地址 又称哈希存储
2、算法

程序 = 数据结构 + 算法

数据结构 如何把现实世界的问题信息化 将信息存进计算机 实现对数据结构的基本操作

算法 如何处理这些信息 解决实际问题。

比如 海底捞排队

系统的数据结构 队列 (先进先出)

要实现的基本操作

1 队头元素出队

2 新元素入队

3 输出队列长度

4 交换第i号和 第 j号位置

现实问题 设计算法 带小孩顾客优先就餐 执行操作 2取号 对比前一桌信息 如果前一桌没有小孩 使用操作4交换位置

2.1、算法五个特性

有穷性 一个算法必须总在执行有穷步之后结束 且每一步都可在有穷时间内完成

确定性 算法中每条指令必须有确切的含义 对于相同的输入只能得到相同的输出

可行性 算法中描述的操作可以通过已经实现的基本运算执行有限次来实现

输入 一个算法有零个或多个输入 这些输入取自于某个特定的对象的集合

输出 一个算法有一个或多个输出 这些输出是与输入有某种特定关系的量

2.2、算法效率的度量

时间复杂度 时间开销与问题规模n之间的关系

空间复杂度 空间开销 内存开销 与问题规模n之间的关系

T1n = 3n + 3 ==> T1n = O(n)

T2n = n^2 + 3n + 900 ==> T2n = O(n^2)

T3n = n^3 + n^2 + 900 ==> T3n = O(n^3) 计算复杂度可以省略系数和常数

空间复杂度

无论问题规模怎么变 算法运行内存空间都是固定常量

算法空间复杂度 S(n) = O(1)

只关注存储空间大小与问题规模相关的变量

函数递归调用带来的内存开销

空间复杂度 等于递归调用的深度

O(1) < O(log2n) <O(n) < O(nlog2n) < O(n^2) <O(n^3) <O(2n)<O(n!)<O(nn)

3、线性表

线性表包含 逻辑结构 存储结构[ 顺序表 顺序存储 链表 链式存储 (双向链表 循环链表 静态链表)] 插入删除操作

线性表定义

线性表是具有相同数据类型的n个数据元素的有限序列 其中 n为表长 当 n = 0时线性表是一个空表 若用 L 命名线性表

则一版表示为 L = (a1,a2,a3,…,ai,ai+1,…an)

a1是表头元素 an是表尾元素

顺序表

除第一个元素外 每个元素有且仅有一个直接前驱 除最后一个元素外 有且只有一个直接后继 n 等于0时 线性表为空表

链表

单链表 循环链表 双向链表

性能项目顺序存储链式存储
空间性能存储密度=1< 1
容量分配事先确定动态改变 更优
时间性能查找运算O(n/2)O(n/2)
读运算O(1)O([n+1]/2) 最好情况1 最坏情况n
插入运算O(n/2) 最好0 最坏nO(1)
删除运算O([n-1]/2)O(1)

线性表的插入删除操作

顺序存储

插入元素前要移动元素挪出空的存储单元 然后再插入元素。删除元素时同样需要移动元素 填充被删除元素的存储单元

链式存储

​ 通过使用指针来链接分散存储在内存中的元素,每个元素(节点)不仅包含数据部分,还包含指向下一个节点的引用(或指针)。这样:

​ 插入操作:只需要调整相关节点的指针即可完成插入,不需要移动其他元素。具体来说,找到插入位置的前一个节点,改变其指针指向

新节点,并让新节点指向原位置的下一个节点。这种操作通常具有O(1)的时间复杂度(仅考虑指针调整时间),前提是已经定位到插入位

置。

​ 删除操作:只需更改待删除节点前后节点的指针连接关系,使其绕过待删除节点。这也是一种快速操作,时间复杂度一般为O(1),不包

括查找待删除节点所需的时间。
总的来说,在链式存储中进行插入和删除操作比在顺序存储中更高效,因为它们避免了大量元素的移动。但是,链式存储可能会消耗更

多的内存用于指针存储,并且访问链表中的元素时不如数组那样直接有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35443.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab 汽车ABS实现模糊pid和pid控制

1、内容简介 Matlab 181-汽车ABS实现模糊pid和pid控制 可以交流、咨询、答疑 2、内容说明 略 实现汽车防抱死制动系统&#xff08;ABS&#xff09;的控制算法&#xff0c;通常涉及到传统的PID控制和模糊PID控制两种方法。下面将分别介绍这两种控制策略的基本概念以及如何在M…

Spring IOC(五个类注解)

controller、service、Repository、Component 、Configurationpackage com.java.ioc;import com.java.ioc.Controller.HelloController; import com.java.ioc.rep.UserRepository; import com.java.ioc.service.UserService; import org.springframework.boot.SpringApplicatio…

[Java实战]Spring Boot服务CPU 100%问题排查:从定位到解决

Spring Boot服务CPU 100%问题排查&#xff1a;从定位到解决 1. 引言 当Spring Boot服务出现CPU占用率100%时&#xff0c;系统性能会急剧下降&#xff0c;甚至导致服务不可用。本文将通过真实代码案例&#xff0c;详细讲解如何快速定位问题根源&#xff0c;并提供解决方案。无…

机器学习扫盲系列(2)- 深入浅出“反向传播”-1

系列文章目录 机器学习扫盲系列&#xff08;1&#xff09;- 序 机器学习扫盲系列&#xff08;2&#xff09;- 深入浅出“反向传播”-1 文章目录 前言一、神经网络的本质二、线性问题解析解的不可行性梯度下降与随机梯度下降链式法则 三、非线性问题激活函数 前言 反向传播(Ba…

LabVIEW 线性拟合

该 LabVIEW 程序实现了 线性拟合&#xff08;Linear Fit&#xff09;&#xff0c;用于计算给定一组数据点的斜率&#xff08;Slope&#xff09;和截距&#xff08;Intercept&#xff09;&#xff0c;并将结果可视化于 XY Graph 中。本案例适用于数据拟合、实验数据分析、传感器…

XSS漏洞靶场---(复现)

XSS漏洞靶场—&#xff08;复现&#xff09; 反射型 XSS 的特点是攻击者诱导用户点击包含恶意脚本的 URL&#xff0c;服务器接收到请求后将恶意脚本反射回响应页面&#xff0c;浏览器执行该脚本从而造成攻击&#xff0c;恶意脚本不会在服务器端存储。 Level 1(反射型XSS) 此漏…

优选算法系列(2.滑动窗口 _ 上)

目录 解法⼀&#xff08;暴力求解&#xff09;&#xff08;不会超时&#xff0c;可以通过&#xff09;&#xff1a;一.长度最小的子数组&#xff08;medium&#xff09; 题目链接209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; 代码&#…

ELK(Elasticsearch、Logstash、Kbana)安装及Spring应用

Elasticsearch安装及Spring应用 一、引言二、基本概念1.索引&#xff08;Index&#xff09;2.类型&#xff08;Type&#xff09;3.文档&#xff08;Document&#xff09;4.分片&#xff08;Shard&#xff09;5.副本&#xff08;Replica&#xff09; 二、ELK搭建1.创建挂载的文件…

Redis,从数据结构到集群的知识总结

Redis基础部分 2. 数据结构 redis底层使用C语言实现&#xff0c;这里主要分析底层数据结构 2.1 动态字符串(SDS) 由于C底层的字符串数组一旦遇到’\0’就会认为这个字符串数组已经结束&#xff0c;意味着无法存储二进制数据&#xff08;如图片、音频等&#xff09;&#xff…

【redis】Jedis 操作 Redis 基础指令(下)

列表操作 lpush/rpush 和 lpop/rpop 将一个或者多个元素从左/右侧放入&#xff08;头/尾插&#xff09;到 list 中 依次头插 从 list 左/右侧取出元素&#xff08;即头/尾删&#xff09; public static void test1(Jedis jedis) { jedis.flushAll(); long n jedis.lpush(…

基于消失点标定前视相机外参

1. 消失点 艺术家&工程师在纸上表现立体图时,常用一种透视法,这种方法源于人们的视觉经验:近大远小,且平行的直线都消失于无穷远处同一个点。就像我们观察两条平行的铁轨时会觉得他们相交于远处的一点,我们把这个点称为消失点。 图1 铁轨组成的消失点 2. 在标定中的应…

TypeScript接口 interface 高级用法完全解析

TypeScript接口 interface 高级用法完全解析 mindmaproot(TypeScript接口高级应用)基础强化可选属性只读属性函数类型高级类型索引签名继承与合并泛型约束设计模式策略模式工厂模式适配器模式工程实践声明合并类型守卫装饰器集成一、接口核心机制深度解析 1.1 类型兼容性原理 …

Vue3 Pinia $subscribe localStorage的用法 Store的组合式写法

Vue3 Pinia $subscribe 可以用来监视Stroe数据的变化 localStorage的用法 localStorage中只能存字符串&#xff0c;所有对象要选转成json字符串 定义store时&#xff0c;从localStorage中读取数据talkList可能是字符串也可能是空数组 Store的组合式写法 直接使用reactiv…

新版AndroidStudio / IDEA上传项目到Gitee

目录 1.Gitee创建仓库 2.填写仓库的信息 3.创建成功后复制仓库的地址 4.检查AndroidStudio是否配置Git 5.点击测试 6.之后Create Git Repository 7.添加到本地仓库 8.提交项目 9.添加上传仓库的地址 10.上传成功 11.去Gitee上刷新检查 1.Gitee创建仓库 2.填写仓库的…

用 Vue 3.5 TypeScript 重新开发3年前甘特图的核心组件

回顾 3年前曾经用 Vue 2.0 开发了一个甘特图组件&#xff0c;如今3年过去了&#xff0c;计划使用Vue 3.5 TypeScript 把组件重新开发&#xff0c;有机会的话再开发一个React版本。 关于之前的组件以前文章 Vue 2.0 甘特图组件 下面录屏是是 用 Vue 3.5 TypeScript 开发的目前…

C语言【数据结构】:时间复杂度和空间复杂度.详解

引言 详细介绍什么是时间复杂度和空间复杂度。 前言&#xff1a;为什么要学习时间复杂度和空间复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏&#xff0c;一般是从时间和空间两个维度来衡量的&#xff0c;即时…

Matlab 基于专家pid控制的时滞系统

1、内容简介 Matlab 185-基于专家pid控制的时滞系统 可以交流、咨询、答疑 2、内容说明 略 在处理时滞系统&#xff08;Time Delay Systems&#xff09;时&#xff0c;使用传统的PID控制可能会面临挑战&#xff0c;因为时滞会导致系统的不稳定或性能下降。专家PID控制通过结…

MyBatis源码分析のSql执行流程

文章目录 前言一、准备工作1.1、newExecutor 二、执行Sql2.1、getMappedStatement2.2、query 三、Cache装饰器的执行时机四、补充总结 前言 本篇主要介绍MyBatis解析配置文件完成后&#xff0c;执行sql的相关逻辑&#xff1a; public class Main {public static void main(Str…

【MySQL】数据库基础

目录 一、什么是数据库1.1 为什么要有数据库1.2 数据库的本质是什么1.3 在Linux下看一下数据库 二、主流数据库三、基本使用3.1 连接服务器3.2 服务器&#xff0c;数据库&#xff0c;表关系 四、MySQL架构五、SQL分类六、存储引擎6.1 存储引擎是什么6.2 查看存储引擎6.3 存储引…

算是解决可以访问github但无法clone的问题

本文的前提是使用了**且可以正常访问github 查看代理的端口 将其配置到git 首先查看git配置 git config --list然后添加配置&#xff0c;我这边使用的是Hiddfy默认的端口是12334&#xff0c;如果是clash应该是7890 git config --global http.proxy 127.0.0.1:12334其他 删除…