第1章:绪论:重要算法类型——《算法设计与分析基础》笔记

重要算法类型

整理完《算法设计与分析基础》的章节笔记与习题后,考虑根据算法求解的问题领域做个整理。

重要算法类型

1.排序

稳定(原下标作为第二关键字),或维护每个元素所在的序号 作为第二排序关键字排序两次?

在位(不需要额外存储空间)

重复

最优最差效率

平均效率

2.查找

顺序

折半(要求有序,支持随机访问)

元素可变的情况——依赖于数据结构

支持增,删,改,高效找(特定属性元素)的数据结构

3.字符串匹配问题

正文中搜索模式 

已搜索部分正文片段=模式的开头片段 

4.图问题

可达性——连通性

 最小生成树

两两最短路径

单节点最短路径

5.组合问题

6.几何问题

7.数值问题

元操作

排序,计数,

习题:

1.1

小于n的最大平方数

[0,n]二分查找

两个已排序可重复数组,选出所有相同元素

方法1

长数组作为正文,短数组作为模式,

找到对齐:模式与正文头部后移一项

放弃模式头部:正文头部大于模式头部:模式头部后移一项

终结条件:两者之一搜索至尾部

方法2

计数,根据技术结果得到新数组

最大比较次数:完全不匹配:正文长度

出现一次匹配:归结为模式去头部的匹配过程,所以不会超过正文长度

欧几里得算法速度与gcd(m,n),min(m,n)中间整数数量的关系

gcd正确性

欧几里得游戏:找出所有差的可能

所有的差满足最大公约数的倍数

扩展欧几里得算法:mx+ny=d d=gcd(m,n) 

用两个互质的数构造出1

丢番图方程求解:ax+by=c,abc任意

n个硬币,依次按i的倍数翻转,i=1……n

最终正面数

所有因子的个数

因子的组合数

1.2

狼羊白菜过河

图(自动机)

过桥问题:4人1手电,最短时间

根据给定时间,排除部分情况

三角形面积公式

根号p(p-a)(p-b)(p-c) p为一半周长?

进制间转换:

以十进制为中转

幂乘关系进制按位处理

不断除以权重得到低位——高位

求解π

数组中最接近的两个数的差

排序(维护最小差值,存在0,返回)

每种排序中更明确的语义

1.3

对数组中每个元素,统计比他小的元素个数,排序

七桥问题:欧拉回路:遍历所有边,回到原点

哈密顿回路:遍历所有的点,回到原点?

图着色

图块:节点

相邻关系:节点间相邻

着色:节点指派有限数目颜色,保证相邻节点颜色不同

对称问题:使用最少颜色

判断线段存在交点

方法1

求两直线交点,判断是否落在两线段上

方法2

四点闭包,判断端点出现顺序是否交错

1.4

删除数组元素

数组要求有序:左到右依次覆写

无序:交换

维护数组长度

有序线性表查找

数组:二分

链表:遍历

不存在的元素(min max或max min)

链表缓存上次结果

邻接矩阵的信息

完全图

有圈(指向自身的节点)

孤立节点

自由数——有根树?

二叉树高度不等式

退化成线

完全二叉树

用数据结构实现优先队列

无序数组

有序数组

二叉查找树

变位词:相同组合,不同排列

原文地址:https://www.cnblogs.com/qmcj/p/9095752.html