软考-软件设计师中级备考 14、刷题 算法

一、考点归纳 

1)排序

2、查找

3、复杂度

4、经典问题

0 - 1 背包动态规划0 - 1 背包问题具有最优子结构性质和重叠子问题性质。通过动态规划可以利用一个二维数组来记录子问题的解,避免重复计算,从而高效地求解出背包能装下的最大价值。
分数背包贪心算法分数背包问题具有贪心选择性质,即通过每次选择单位重量价值最大的物品放入背包,最终能得到全局最优解。因为物品可以分割,所以贪心策略有效。
邻分背包动态规划与 0 - 1 背包类似,邻分背包也需要考虑不同物品组合下的最优解,通过动态规划可以较好地处理这种组合优化问题,将问题分解为子问题并求解。
旅行商问题动态规划动态规划可以通过记录已经访问过的城市集合和当前所在城市来求解,但时间复杂度较高,对于大规模问题不适用。模拟退火、遗传算法等近似算法可以在合理时间内得到近似最优解,适用于实际应用中的大规模问题。
矩阵链乘动态规划矩阵链乘问题具有最优子结构性质,通过动态规划可以将原问题分解为多个子问题,计算出子问题的最优解并存储,避免重复计算,从而高效地确定矩阵链乘的最优计算顺序,减少计算量。
最长公共子序列动态规划最长公共子序列问题具有最优子结构性质和重叠子问题性质。通过动态规划利用二维数组记录两个序列的子序列之间的最长公共子序列长度,从底向上计算,最终得到整个序列的最长公共子序列长度和具体序列。

5、加密

 二、刷题
1、采用冒泡排序算法对(49,38,65,97,76,13,27,49)进行非降序排序,两趟后的序列为()
通过相邻元素交换的方式,最值冒泡,排到队尾
第一个泡 =》38,49,65,76,13,27,49,97
第二个泡 =》38,49,65,13,27,49,76,97

2、
采用简单选择排序算法对序列(34,12,49,28,31,52,51,49)进行非降序排序,两趟后的序列为()
①最值12,与首元素34交换=>[12,34,49,28,31,52,51,49]=> [12]、[34,49,28,31,52,51,49]
②最值28,与首元素34交换=>[12]、[28,49,34,31,52,51,49]=>[12,28] [49,34,31,52,51,49]

3、对于一个初始无序的关键字序列,在下面的排序方法中,()第一趟排序结束后,一定能将序列中的某个元素在最终有序序列中的位置确定下来   

①直接插入排序   ②冒泡排序   ③简单选择排序  ④堆排序  ⑤快速排序  ⑥归并排序

关键词最终有序序列中的位置=》这道题考察快速排序

以序列 [3, 2, 1]为例

①直接插入排序

整个序列会被划分为已排序序列和待排序序列两部分,将未排序数据插入到已排序序列的合适位置。    初始已排序[3],待排序[2,1]     =>第一趟结束[2,3] , [1]                            否

②冒泡排序           是

③简单选择排序    是

整个序列会被划分为已排序序列和待排序序列两部分,从待排序序列中找出最小的元素
初始已排序[],待排序[3,2,1]=》找出待排序的最值1  => 最值与第一个元素交换

=》[1,2,3]=》已排序[1],待排序[2,3]     

④堆排序          是

因为堆排序属于选择排序,所以它符合条件

⑤快速排序         是

快速排序选择一个基准元素,将序列分为两部分,使得左边部分的元素都小于等于基准元素,右边部分的元素都大于等于基准元素。在第一趟排序结束后,基准元素就被放置到了它在最终有序序列中的正确位置。例如,对于序列 [3, 2, 1],若选择 3 为基准元素,第一趟排序后变为 [2, 1, 3],基准元素 3 的最终位置确定了。

⑥归并排序        

归并排序是将序列分成子序列,然后两两合并。在第一趟归并时,将其看作是由单个元素组成的子序列,即[3]、2]、[1],合并后得到[2,3]  [1]     

综上,答案是②③④⑤。

4.1、对一组数据进行排序,要求排序算法的时间复杂度为O(nlogn),并要求排序是稳定的,则可采用(D 归并排序)算法。
     对一组数据进行排序,要求排序算法的时间复杂度为O(nlogn),且空间复杂度为O(1),则可采用(B 堆排序)算法。
A)直接插入排序      B)堆排序       C)快速排序               D)归并排序

4.2、下列排序算法中占用辅助存储空间最多的是(A)

A)归并排序       B) 快速排序       C) 堆排序              D)冒泡排序

4.3、(A)是稳定的排序算法
A)冒泡排序        B)快速排序        C)堆排序        D)简单选择排序
见第一张插图

5、折半查找问题

①二分查找就是折半查找,因为有一个考点是折半查找属于__分治__算法,如果题目出线二分查找,那就没人会选错了。
②在线性表L中进行二分(折半)查找,要求L顺序存储,元素有序排列
      写代码的时候基于有序数组实现二分查找
 ③考察二分查找生成二叉判定树“左子树元素小于根节点元素,右子树元素大于根节点元素”    

 2023真题:折半查找等概率查找某个包含8个元素的有序表,查找成功的平均查找长度为?2.625

假设有序表为{a1, a2, a3, a4, a5, a6, a7, a8}

  • 第一次折半,中间元素是a4,因为(1 + 8) /2 = 4,所以二叉判定树的根节点是a4。
  • 左子树是{a1, a2, a3},右子树是{a5, a6, a7, a8}。
  • 递归左子树  (1+3)/2=2=>{a1},{a3}
  • 递归右子树  (5+8)/2=6=>{a5},{a7,a8}=>{a8}

  • 二分查找生成的二叉判定树属于平衡二叉树(树中任意节点的左右子树高度差的绝对值不超过 1,并且左右子树也都是平衡二叉树。)

    结点的高度代表查找长度(次数),比如a4是1,因为第一次折半就是它,求总长度

    1*1+2*2+3*4+4*1=18

    =》平均长度   21/8 = 2.625
     

6、 采用贪心策略求解(A)问题,一定可以得到最优解
A)分数背包   B)0-1背包   C)旅行商   D)最长公共子序列
①贪心策略就是找最贵的。

  • A. 分数背包:背包容量5kg,沙土A 3千克总价值100元,沙土B 6千克总价值100元,
    沙土A更贵,根据贪心策略,先把沙土A装完,再装沙土B。
  • B. 0 - 1 背包:在 0 - 1 背包问题中,物品是不可分割的,要么取要么不取。
    背包容量1立方米,玉石原石A 0.4立方总价值100元,玉石原石B 1立方总价值200元,先把玉石原石A装完,再装原石B,装不上=》只装了100元,失败
  • C. 旅行商问题:该问题是要找出一个旅行商在访问所有城市后回到起始城市的最短路径。贪心策略可能会选择当前距离最近的未访问城市作为下一个目的地,但这种局部最优的选择可能会导致错过全局最优解。
    A->B=1,A->C=2,B->C=一百万,C->A=2,C->B=3,B->A=5;
    由A开始,访问所有城市后回到A,由贪心法得到A->B->C->A=一百多万

    最短路径实为A->C->B->A=10
  • D. 最长公共子序列:求解最长公共子序列问题需要考虑两个序列的整体结构和对应关系,不能简单地通过贪心选择来确定。例如,对于序列 “AGGTAB” 和 “GXTXAYB”,如果使用贪心策略,可能会先选择第一个序列中的 “A”,但这样会导致错过更长的公共子序列 “GTAB”。所以贪心策略不适用于最长公共子序列问题。
     

7、在求解某问题时,经过分析发现该问题具有最优子结构和重叠子问题性质,则适用(C)算法设计策略得到最优解。
A) 分治          B)贪心         C) 动态规则         D) 回溯

若了解问题的解空间,并以广度优先的方式搜索解空间,则采用的是(D)算法策略。
A) 动态规则          B)贪心         C) 回溯          D) 分支界限 

动态规划:最优子结构
贪心法:局部最优解
回溯法:深度优先
分支界限:广度优先


8、利用报文摘要算法生成报文摘要的目的是(A)
A)防止发送的报文被篡改                                 报文摘要算法,如MD5
B)对传输数据进行加密,防止数据被窃听        随便一个加密算法,如RSA
C)验证通信对方的身份,防止假冒

对比项目数字证书数字签名
概念由证书颁发机构(CA)颁发的权威性电子文档,用于证明证书持有者的身份和公钥的合法性使用发送者的私钥对要发送的数据的摘要进行加密得到的信息
功能提供身份验证,确保通信双方能确认对方身份的真实性和合法性保证数据的完整性、认证发送者的身份以及防止抵赖
防止报文被篡改本身不能直接防止报文被篡改,无法检测和防止报文在传输过程中被篡改可以通过验证签名来发现报文是否被篡改,因为报文篡改会导致摘要变化,使签名验证不通过
确认身份用于确认拥有该证书的一方的身份,无论是服务器端还是客户端主要用于确认发送报文一方的身份,接收方通过发送方公钥验证签名来确认发送者身份

D)防止发送方否认发送过的数据=》数字签名

9、系统交付用户使用了一段时间后发现,系统的某个功能响应非常慢。修改了某模块的一个算法使其运算速度得到了提升,则该行为属于(C)维护
A)改正性      修改错误
B)适应性      外部环境变化,比如屏幕变大
C)改善性      扩充功能、改善性能
D)预防性      系统监控与预警


至此完结,其他章节的选择题没有太多需要理解的东西,刷刷刷,要把大片的时间放到下午的大题上去。

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

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

相关文章

【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法

零、前言 目前正在使用的Ubuntu服务器中,仅阿里云(不止一台)出现了这个问题,因此我判定是阿里云服务器独有的问题。如果你的服务器提供商不是阿里云,那么这篇文章可能对你没有帮助。 如果已经因为升级错误导致依赖冲突…

css 点击后改变样式

背景: 期望实现效果:鼠标点击之后,保持选中样式。 实现思路:在css样式中,:active 是一种伪类,用于表示用户当前正在与被选定的元素进行交互。当用户点击或按住鼠标时,元素将被激活,此…

采用AI神经网络降噪算法的语言降噪消回音处理芯片NR2049-P

随着AI时代来临.通话设备的环境噪音抑制也进入AI降噪算法时代. AI神经网络降噪技术是一款革命性的语音处理技术,他突破了传统单麦克风和双麦克风降噪的局限性,利用采集的各种日常环境中的噪音样本进行训练学习.让降噪算法具有自适应噪声抑制功能,可以根…

不用联网不用编程,PLC通过智能网关快速实现HTTP协议JSON格式与MES等系统平台双向数据通讯

智能网关IGT-DSER集成了多种PLC的原厂协议,方便实现各种PLC、智能仪表通过HTTP协议与MES等各种系统平台通讯对接。PLC内不用编写程序,设备不用停机,通过网关的参数配置软件(下载地址)配置JSON文件的字段与PLC寄存器地址等参数即可。 …

如何将两台虚拟机进行搭桥

将两台虚拟机实现网络互通(“搭桥”)需配置虚拟网络,以下是基于 VMware Workstation 和 VirtualBox 的详细操作指南(以 Windows 系统为例,Linux 原理类似): 一、VMware Workstation 配置&#x…

Xianyu AutoAgent,AI闲鱼客服机器人

Xianyu AutoAgent是一款专为闲鱼平台开发的智能客服机器人系统,旨在提供全天候的自动化服务。它具备多专家协同决策、智能议价和上下文感知对话等功能,能够管理轻量级的对话记忆,利用完整的对话历史为用户提供更自然的交流体验。 Xianyu Aut…

键盘输出希腊字符方法

在不同操作系统中,输出希腊字母的方法有所不同。以下是针对 Windows 和 macOS 系统的详细方法,以及一些通用技巧: 1.Windows 系统 1.1 使用字符映射表 字符映射表是一个内置工具,可以方便地找到并插入希腊字母。 • 步骤&#xf…

什么是SparkONYarn模式

1. 什么是 Spark on YARN? Spark on YARN 是 Apache Spark 的一种部署模式,允许 Spark 应用程序在 Hadoop YARN 集群上运行,充分利用 YARN 的资源管理和调度能力。这种模式将 Spark 与 Hadoop 生态深度集成,使企业能够在同一集群…

【git】clone项目后续,github clone的网络配置,大型项目git log 输出txt,切换commit学习,goland远程,自存档

git网络配置,解决git clone github速度奇慢 git config --global http.proxy http://127.0.0.1:7897 git config --global https.proxy http://127.0.0.1:7897git log输出到文件(便于checkout) 这里有些字符如表情会乱码,不知道…

Java游戏服务器开发流水账(3)游戏数据的缓存简介

简介 游戏服务器数据缓存是一种在游戏服务器运行过程中,用于临时存储经常访问的数据的技术手段,旨在提高游戏性能、降低数据库负载以及优化玩家体验。游戏开发中数据的缓存可以使用Java自身的内存也可以使用MemCache,Redis,注意M…

STL?vector!!!

一、前言 之前我们借助手撕string加深了类和对象相关知识,今天我们将一起手撕一个vector,继续深化类和对象、动态内存管理、模板的相关知识 二、vector相关的前置知识 1、什么是vector? vector是一个STL库中提供的类模板,它是存储…

C++学习之路,从0到精通的征途:继承

目录 一.继承的概念及定义 1.继承的概念 2.继承的定义 (1)继承的定义格式 (2)继承基类成员访问方式的变化 二.基类与派生类间的转换 1.派生类对象赋值给基类的引用/指针 2. 派生类对象直接赋值给基类对象 三.继承的作用域 四.派生类的默认成员函数 1.构造函数 2.拷…

用vue和go实现登录加密

前端使用CryptoJS默认加密方法: var pass CryptoJS.AES.encrypt(formData.password, key.value).toString()使用 CryptoJS.AES.encrypt() 时不指定加密模式和参数时,CryptoJS 默认会执行以下操作 var encrypted CryptoJS.AES.encrypt("明文&quo…

React百日学习计划——Deepseek版

阶段一:基础巩固(1-20天) 目标:掌握HTML/CSS/JavaScript核心语法和开发环境搭建。 每日学习内容: HTML/CSS(1-10天) 标签语义化、盒模型、Flex布局、Grid布局、响应式设计(媒体查询…

WPF中如何自定义控件

WPF自定义控件简化版:账户菜单按钮(AccountButton) 我们以**“账户菜单按钮”为例,用更清晰的架构实现一个支持标题显示、渐变背景、选中状态高亮**的自定义控件。以下是分步拆解: 一、控件核心功能 我们要做一个类似…

Deepseek+Xmind:秒速生成思维导图与流程图

deepseekxmind,快速生成思维导图和流程图 文章目录 思维导图deepseek笔记本 txt文件xmind 流程图deepseekdraw.io 思维导图 deepseek 笔记本 txt文件 将deep seek的东西复制到文本文件中,然后将txt文件拓展名改成md xmind 新建思维导图----左上角三…

基于javaweb的SpringBoot爱游旅行平台设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

服务器机架的功能和重要性

服务器已经成为各个行业必不可少的网络设备,而服务器机架则是数据中心和IT基础设施中不可或缺的重要组成部分,服务器机架能够为服务器和其他网络设备提供物理支撑,同时还可以提供设备维护和管理等多种功能,本文就来介绍一下服务器…

游戏引擎学习第277天:稀疏实体系统

回顾并为今天定下基调 上次我们结束的时候,基本上已经控制住了跳跃的部分,达到了我想要的效果,现在我们主要是在等待一些新的艺术资源。因此,等新艺术资源到位后,我们可能会重新处理跳跃的部分,因为现在的…

阿克曼-幻宇机器人系列教程1- 实现上位机与下位机交互的两种方式

1. 电脑与机器人通过SSH命令连接 1.1 将机器人上电 目的:将机器人变成热点 目标:将电脑连接机器人网络 热点名称:Huanyu-111 密码:12345678 1.2 完成电脑与机器人之间的连接 实现:在电脑终端中执行命令通过SSH登录…