一、算法设计策略(必考题,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)) | 稳定 | 基于基数,适合整数 / 字符串排序 |
典型题(就是你这道题的类型):
- 归并排序的时间复杂度?→ 最好最坏都是 O (nlogn)
- 哪种排序算法最坏时间复杂度不是 O (n²)?→ 堆排序 / 归并排序
- 哪种排序是稳定的?→ 冒泡、插入、归并、基数
- 快速排序的最坏时间复杂度?→ 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拓扑排序的作用?→ 检测有向环、安排工序顺序
五、其他高频算法(选择题常客)
- 哈夫曼编码:贪心算法,用于数据压缩,构造最优二叉树,带权路径长度最短
- 动态规划经典题:0-1 背包、最长公共子序列、最长递增子序列、矩阵连乘
- 回溯经典题:八皇后问题、全排列、子集和、n 皇后
- 分治经典题:汉诺塔、大整数乘法、棋盘覆盖
- 时间复杂度计算:递归方程求解(比如归并排序 T (n)=2T (n/2)+O (n) → T (n)=O (nlogn))
「抓分技巧」
你说的「捷达长老说这种题是典型的」,这类题就是 **「算法策略 + 时间复杂度」绑定的经典题 **,是软考算法选择题的「送分题」,你只要记住:
- 分治 = 归并 / 快排 / 二分,时间复杂度 O (nlogn)
- 动态规划 = 背包 / 最长子序列,时间复杂度 O (n²)
- 贪心 = 哈夫曼 / 最小生成树 / Dijkstra
- 归并排序永远是 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