软件设计师教程(第三版)(修订版)8至11章笔记

2024-01-06 20:08

本文主要是介绍软件设计师教程(第三版)(修订版)8至11章笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据结构 《== 线性、非线性(树、图)
线性表 《== 顺序存储(随机存取方便,插入/删除需要移动元素)、链式存储

 

静态查找表对顺序、链式存储都适用
顺序查找-平均查找长度 ASL=(n+1)/2    监视哨
折半查找-(对已排序,过程可以用一颗二叉树描述-折半查找判定树) p444
         n个结点的判定树深度为 (log2n)+1 ,即最多查找这么多次
         平均查找长度 ASL=( ((n+1)/n) * (log2(n+1)) ) -1 ,n较大时ASL约等于(log2(n+1))-1
分块查找-又称索引顺序查找,效率介于顺序和折半查找之间
         平均查找长度 ASL=(b+1)/2 + (s+1)/2 = 1/2 * (s/n +s) +1  (均分为b块,每块s个记录)
                      当s取sqrt(n)时,ASL取最小值sqrt(n)+1,此时效率比顺序要好得多,但远不及折半

动态查找表(表结构本身是查找过程中动态生成)
二叉排序树-又称二叉查找树 p447 p449
平衡二叉树(AVL树)
B-树

哈希表查找 - 构造哈希表(直接定址法、数字分析法、平方取中法、折叠法、随机数法、除留余数法)
             解决冲突(开放定址法(线性探测法)p456、链地址法(拉链法)、再哈希法、建立一个公共溢出区)
             填装因子alpha=表中装入记录数/哈希表长度
             alpha标志着哈希表的装满程度,越小则冲突可能性越小,越多则填入的数据越多,冲突可能性越大,查找时比较的关键字个数也越多

排序-稳定、不稳定,内部排序、外部排序
简单排序 - 直接插入-稳定,时间复杂度O(n^2),空间复杂度O(1),仅需要一个辅助空间用于元素交换
           冒泡-稳定,时间复杂度O(n^2),空间复杂度O(1)
           简单选择-不稳定,时间复杂度O(n^2),空间复杂度O(1)
希尔排序 - 缩小增量排序,对直接插入排序的改进 p461  不稳定,时间复杂度约为O(n^1.3),空间复杂度O(1)
快速排序 - p462  不稳定,时间复杂度O(n * logn),空间复杂度O(logn)
           若初始记录序列有序或基本有序时,则退化为冒泡排序,时间复杂度为O(n^2)
堆排序 - p464  不稳定,对大量记录很有效时间复杂度O(n * logn),空间为记录大小
归并排序 - 两路归并 p466 时间复杂度为O(n * logn),空间为记录大小
基数排序 - 稳定 总运算时间O(d*(n+r))


( 1 )若待排序的记录数目n 较小时, 可采用插入排序和简单选择排序。由于直接插入排序
.所需的记录移动操作较简单选择排序多,因而当记录本身信息量较大时,用简单选择排序方法
较好。
(2) 若待排序记录按关键字基本有序,则宜采用直接插入排序或冒泡排序。
(3)当n 很大且关键字的位数较少时,采用链式基数排序较好。
(4) 若n 较大,则应采用时间复杂度为O(nlogn)的排序方法,例如快速排序、堆排序或归
并排序。快速排序目前被认为是内部排序方法中最好的方法,当待排序的关键字为随机分布时,
快速排序的平均运行时间最短:但堆排序只需l 个辅助存储空间, 并且不会出现在快速排序中
可能出现的最坏情况。这两种排序方法都是不稳定的排序方法。若要求排序稳定,可选择归并
排序。通常可将归并排序和直接插入排序结合起来使用。先利用直接插入排序求得较长的有序
子序列,然后再两两归井。因为直接插入排序是稳定的,所以改进的归并排序是稳定的。
前面讨论的内部排序算法〈除基数排序外〕都是在~维数组上实现的。当记录本身信息量
较大时,为避免括费大量的时间移动记录,可以采用链表作为存储结构, 在这种情况下, 希尔
排序、快速排序和推排序就不适用了。


外部排序一般用归并(多路平衡归并) p471


算法 《== 有穷性、确定性、可行性、输入、输出
算法设计 《== 动态规划法、贪心法、回溯法、分支限界法、概率算法、近似算法
算法分析 《== 时间复杂性(最佳/最坏/平均情况)、渐进符号p476、递归式(展开法、代换法、递归树法、主方法)p477
算法表示 《== 自然语言、流程图、程序设计语言、伪代码

分治法 -- 递归 - 边界条件(终止条件(递归出口)),递归模式(大问题转小(递归体))
          在每层递归上都有分解、求解、合并三个步骤
          应用:归并排序p480、最大子段p481
动态规划 -- 最优子结构、重叠字问题特征,可以使用求解
            应用:背包问题p484、最长公共子序列p486
贪心法 -- 最优子结构、贪心选择性质,可以使用求解
          应用:活动选择p489、背包问题p491
回溯法 -- 深度优先系统搜索,问题解空间(空间树),可以使用非递归或递归p494
          应用:背包问题p495、n皇后问题p498
分支限界法 -- 队列
概率算法 -- 数值概率算法、蒙特卡罗算法、拉斯维加斯算法和合伍德 算法
近似算法 -- 多项式时间算法,放弃求最优解,而用近似最优解代替最忧解
            衡量标准:算法的时间复杂,解的近似程度


面向对象=对象+分类+继承+通过消息的通信
面向对象分析 -- 认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息
面向对象设计 -- 由概念模型生成的分析模型被装入到相应的执行环境中时,还需要修改
面向对象软件的测试 -- 算法层、类层、模板层、系统层
OOA 模型 (is-a,has-a) -- 层次: 主题层、对象类层、结构层、属性层、服务层
                      -- 活动: 标识对象类、标识结构、定义主题、定义属性、定义服务
Booch认为软件开发OOD是一个螺旋上升的过程
OMT模型 -- 对象模型(对象、类、继承、链和关联、泛化、聚集、模块)、
           动态模型、
           功能模型
OMT方法步骤 -- 分析、系统设计、对象设计和实现
UML -- 结构事物、行为事物、分组事物、注释事物
创建型设计模式 《== Singleton p535
结构型设计模式(不是对接口和实现进行组合,而是描述了如何对一些对象进行组合) 《== Adapter模式、Composite模式、Flyweight模式、Decorator模式
行为设计模式 《== TemplateMethod、ChainofResponsibility、Observer模式p538

 

标准化对象 《== 具体对象、总体对象
标准化过程 《== 标准制定(总结/积累经验)、实施(推广/普及经验)、更新
标准范围分类 《== 国际标准(ISO、IEC)、国家标准(GB、ANSI、BS、JIS)、区域标准(PASC、CEN、ASAC、ARSO)、
                  行业标准(IEEE、GJB、DOD-STD)、企业(机构)标准、项目(课题)标准(CIMS)
    性质分类 《== 技术标准、管理标准、工作标准
    对象和作用分类 《== 基础标准、产品标准、方法标准、安全标准、卫生标准、环境保护标准和服务标准等
    法律约束性分类 《== 强制性标准、推荐性标准

知识产权 《== 工业产权(创造性成果权利和识别性标记权利)、著作权(版权)
知识产权特点 《== 无形性、双重性、确认性、独占性、地域性、时间性

 

这篇关于软件设计师教程(第三版)(修订版)8至11章笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/577464

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom