软件设计师教程(第三版)(修订版)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

相关文章

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

CnPlugin是PL/SQL Developer工具插件使用教程

《CnPlugin是PL/SQLDeveloper工具插件使用教程》:本文主要介绍CnPlugin是PL/SQLDeveloper工具插件使用教程,具有很好的参考价值,希望对大家有所帮助,如有错... 目录PL/SQL Developer工具插件使用安装拷贝文件配置总结PL/SQL Developer工具插

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

MySQL 安装配置超完整教程

《MySQL安装配置超完整教程》MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品,:本文主要介绍MySQL安装配置... 目录一、mysql 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查