算法设计—计算机等级考试—软件设计师考前备忘录—东方仙盟

一、算法设计策略(必考题,1-2 分)

核心考点:4 大策略的定义 + 代表算法

表格

策略 核心 代表算法 考试关键词
分治 拆独立子问题,分而治之 归并排序、快速排序、二分查找、汉诺塔 「拆分、递归、合并」
动态规划 重叠子问题,空间换时间 最长公共子序列、0-1 背包、最短路径、矩阵连乘 「最优子结构、子问题重叠、填表」
贪心 局部最优,一步到位 哈夫曼树、活动安排、Prim/Kruskal、Dijkstra 「当前最优、不回溯、贪心选择」
回溯 深度优先,试错回溯 八皇后、全排列、子集和、图的着色 「穷举、回溯、剪枝」

典型题:

快速排序 / 归并排序采用了什么策略?→ 分治0-1 背包问题采用了什么策略?→ 动态规划哈夫曼编码采用了什么策略?→ 贪心


二、排序算法(必考题,2-3 分,软考算法题核心)

核心考点:时间复杂度、稳定性、适用场景

表格

排序算法 最好时间 最坏时间 平均时间 稳定性 核心特点
冒泡排序 O(n) O(n²) O(n²) 稳定 相邻比较,简单,数据有序时最快
直接插入排序 O(n) O(n²) O(n²) 稳定 适合小规模 / 基本有序数据
简单选择排序 O(n²) O(n²) O(n²) 不稳定 移动次数少,适合移动成本高的场景
希尔排序 O(nlogn) O(n²) O(n^1.3) 不稳定 插入排序的改进,分组插入
快速排序 O(nlogn) O(n²) O(nlogn) 不稳定 分治,平均最快,最坏退化
堆排序 O(nlogn) O(nlogn) O(nlogn) 不稳定 适合大数据量,不稳定
归并排序 O(nlogn) O(nlogn) O(nlogn) 稳定 分治,稳定,适合外部排序
基数排序 O(d(n+r)) O(d(n+r)) O(d(n+r)) 稳定 基于基数,适合整数 / 字符串排序

典型题(就是你这道题的类型):

  1. 归并排序的时间复杂度?→ 最好最坏都是 O (nlogn)
  2. 哪种排序算法最坏时间复杂度不是 O (n²)?→ 堆排序 / 归并排序
  3. 哪种排序是稳定的?→ 冒泡、插入、归并、基数
  4. 快速排序的最坏时间复杂度?→ O (n²)(数据完全有序时)

三、查找算法(必考题,1-2 分)

核心考点:时间复杂度、适用场景

表格

查找算法 时间复杂度 适用数据 核心特点
顺序查找 O(n) 无序 / 有序 简单,适合小规模数据
二分查找(折半查找) O(logn) 有序顺序表 分治,必须有序,不能用于链表
散列查找(哈希) O (1)(平均) 任意 哈希函数,解决冲突(链地址法、开放定址法)
二叉排序树查找 O (logn)(平衡)/O (n)(退化) 二叉排序树 动态查找,插入删除方便

典型题:

二分查找的时间复杂度?→ O (logn)散列查找的平均时间复杂度?→ O (1)二分查找能否用于链表?→ 不能(链表无法随机访问)


四、图的算法(必考题,2-3 分)

核心考点:最小生成树、最短路径、拓扑排序

表格

算法 用途 时间复杂度 策略
Prim 算法 最小生成树(稠密图) O(n²) 贪心
Kruskal 算法 最小生成树(稀疏图) O(eloge) 贪心
Dijkstra 算法 单源最短路径(无负权) O(n²) 贪心
Floyd 算法 多源最短路径(可负权,无负环) O(n³) 动态规划
拓扑排序 有向无环图(DAG)的顶点排序 O(n+e) 深度优先 / 广度优先

典型题:

求单源最短路径用什么算法?→ Dijkstra求多源最短路径用什么算法?→ Floyd拓扑排序的作用?→ 检测有向环、安排工序顺序


五、其他高频算法(选择题常客)

  1. 哈夫曼编码:贪心算法,用于数据压缩,构造最优二叉树,带权路径长度最短
  2. 动态规划经典题:0-1 背包、最长公共子序列、最长递增子序列、矩阵连乘
  3. 回溯经典题:八皇后问题、全排列、子集和、n 皇后
  4. 分治经典题:汉诺塔、大整数乘法、棋盘覆盖
  5. 时间复杂度计算:递归方程求解(比如归并排序 T (n)=2T (n/2)+O (n) → T (n)=O (nlogn))

「抓分技巧」

你说的「捷达长老说这种题是典型的」,这类题就是 **「算法策略 + 时间复杂度」绑定的经典题 **,是软考算法选择题的「送分题」,你只要记住:

  1. 分治 = 归并 / 快排 / 二分,时间复杂度 O (nlogn)
  2. 动态规划 = 背包 / 最长子序列,时间复杂度 O (n²)
  3. 贪心 = 哈夫曼 / 最小生成树 / Dijkstra
  4. 归并排序永远是 O (nlogn),稳定;快排最坏 O (n²),不稳定

人人皆为创造者,共创方能共成长

每个人都是使用者,也是创造者;是数字世界的消费者,更是价值的生产者与分享者。在智能时代的浪潮里,单打独斗的发展模式早已落幕,唯有开放连接、创意共创、利益共享,才能让个体价值汇聚成生态合力,让技术与创意双向奔赴,实现平台与伙伴的快速成长、共赢致远。

原创永久分成,共赴星辰大海

原创创意共创、永久收益分成,是东方仙盟始终坚守的核心理念。我们坚信,每一份原创智慧都值得被尊重与回馈,以永久分成锚定共创初心,让创意者长期享有价值红利,携手万千伙伴向着科技星辰大海笃定前行,拥抱硅基 生命与数字智能交融的未来,共筑跨越时代的数字文明共同体。

东方仙盟:拥抱知识开源,共筑数字新生态

在全球化与数字化浪潮中,东方仙盟始终秉持开放协作、知识共享的理念,积极拥抱开源技术与开放标准。我们相信,唯有打破技术壁垒、汇聚全球智慧,才能真正推动行业的可持续发展。

开源赋能中小商户:通过将前端异常检测、跨系统数据互联等核心能力开源化,东方仙盟为全球中小商户提供了低成本、高可靠的技术解决方案,让更多商家能够平等享受数字转型的红利。
共建行业标准:我们积极参与国际技术社区,与全球开发者、合作伙伴共同制定开放协议 与技术规范,推动跨境零售、文旅、餐饮等多业态的系统互联互通,构建更加公平、高效的数字生态。
知识普惠,共促发展:通过开源社区 、技术文档与培训体系,东方仙盟致力于将前沿技术转化为可落地的行业实践,赋能全球合作伙伴,共同培育创新人才,推动数字经济 的普惠式增长

阿雪技术观

在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者 。无论是分享代码、撰写技术博客,还是参与开源项目 维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基 生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets , hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology

相关推荐
田梓燊6 小时前
力扣:23.合并 K 个升序链表
算法·leetcode·链表
re林檎6 小时前
算法札记——4.27
算法
数据牧羊人的成长笔记7 小时前
逻辑回归与Softmax回归
算法·回归·逻辑回归
郑州光合科技余经理7 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
d111111111d10 小时前
STM32-UART封装问题解析
笔记·stm32·单片机·嵌入式硬件·学习·算法
Jiangxl~12 小时前
IP数据云如何为不同行业提供精准IP查询与风险防控解决方案?
网络·网络协议·tcp/ip·算法·ai·ip·安全架构
李伟_Li慢慢12 小时前
wolfram详解山峦算法
前端·算法
counting money12 小时前
prim算法最小生成树(java)
算法
澈20712 小时前
C++面向对象:类与对象核心解析
c++·算法
用户6906738819212 小时前
基于无人机的单目测距系统,平均误差仅2.12%
算法