软件设计师:算法
排序
表格直接背
插入排序 稳定 类似斗地主摸牌
-
将一个待排序的数组分成两部分,前一部分代表是有序序列,后一部分代表未排序序列
-
将第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列
-
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置
-
如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面,直到未排序序列全部扫描完毕为止
序列基本有序,最适合直接插入排序
选择排序 不稳定
- 从待排序的元素中选出最小的元素,存放在起始位置,固定住该最小元素
- 同理取出未固定的元素中的最小元素,存放在起始位置,固定(两个元素交换位置)
- 以此类推,直到全部待排序的数据元素的个数为零。
- 5个元素只需要选择4次,因为最后一个默认为最大的
冒泡排序 稳定
- 比较相邻的元素,如果第一个比第二个大,就交换他们两个
- 对每一对相邻元素做同样的工作,从开始的第一对到结尾的最后一对,这步做完后,最后的元素应该会是最大的数
- 每次过后,需要排序的元素就越来越少,对剩下需要排序的元素重复上面的步骤,直到没有任何一对数字需要比较
希尔排序 上午题没考过 下午题考过1次
时间不够暂时不看了
堆排序 就考过1次
了解 时间不够暂时不看了
归位 构造大顶堆
快速排序 不稳定 分治
归并排序 稳定 分治
先分再合
交叉最多比较的最多
回溯算法 上1次 下2次 N皇后问题
类似走迷宫,分叉口走错路了就返回(回溯)试其它的路
N皇后问题
分治算法 递归求解
二分查找 归并排序 快速排序都是分治思想
复杂问分解成相同/相似的子问题,一直分知道最后的子问题可以简单的直接求解
也有可能划分代价大合并代价小(快排)
动态规划算法 考的最多 求最优解
如求解:0-1背包 最长公共子序列 矩阵连乘
类似于分治法,但是分解的子问题往往不是独立的
用一个表记录所有已解决的子问题答案,在需要时使用,构造一个最优解
0-1背包问题
贪心算法 局部最优
如购物找钱,先给面值大的,再给小的(不一定是最优解)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析