欢迎来到魔幻小生的博客

软件设计师:算法

排序

image

image

表格直接背

插入排序 稳定 类似斗地主摸牌

  • 将一个待排序的数组分成两部分,前一部分代表是有序序列,后一部分代表未排序序列

  • 将第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列

  • 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置

  • 如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面,直到未排序序列全部扫描完毕为止

image

序列基本有序,最适合直接插入排序

image

image

image

image

选择排序 不稳定

  • 从待排序的元素中选出最小的元素,存放在起始位置,固定住该最小元素
  • 同理取出未固定的元素中的最小元素,存放在起始位置,固定(两个元素交换位置)
  • 以此类推,直到全部待排序的数据元素的个数为零。
  • 5个元素只需要选择4次,因为最后一个默认为最大的

image

image

image

冒泡排序 稳定

  • 比较相邻的元素,如果第一个比第二个大,就交换他们两个
  • 对每一对相邻元素做同样的工作,从开始的第一对到结尾的最后一对,这步做完后,最后的元素应该会是最大的数
  • 每次过后,需要排序的元素就越来越少,对剩下需要排序的元素重复上面的步骤,直到没有任何一对数字需要比较

image

希尔排序 上午题没考过 下午题考过1次

时间不够暂时不看了

堆排序 就考过1次

了解 时间不够暂时不看了

归位 构造大顶堆

快速排序 不稳定 分治

image

image

image

image

image

image

归并排序 稳定 分治

image

先分再合

image

image

image

交叉最多比较的最多

image

image

image

image

image

回溯算法 上1次 下2次 N皇后问题

类似走迷宫,分叉口走错路了就返回(回溯)试其它的路

N皇后问题

image

image

image

分治算法 递归求解

二分查找 归并排序 快速排序都是分治思想

复杂问分解成相同/相似的子问题,一直分知道最后的子问题可以简单的直接求解

image

image

image

也有可能划分代价大合并代价小(快排)

image

image

动态规划算法 考的最多 求最优解

如求解:0-1背包 最长公共子序列 矩阵连乘

image

类似于分治法,但是分解的子问题往往不是独立的

用一个表记录所有已解决的子问题答案,在需要时使用,构造一个最优解

0-1背包问题

image

image

image

贪心算法 局部最优

image

如购物找钱,先给面值大的,再给小的(不一定是最优解)

部分背包问题

image

image

image

posted @ 2024-05-16 01:36  魔幻小生  阅读(31)  评论(0编辑  收藏  举报