设计(选择一般算法) 与 分析(时空复杂度)
算法的五大特性:
输入
输出
有穷性 操作系统不是算法
确定性
可行性
好算法的特性:正确 健壮 可理解 高效 分级
算法的表示法:自然语言 流程图 代码 伪代码
算法过程:
输入
输出
一般算法 蛮力法 分治法…
具体算法
分析复杂度
运行
求两个自然数的最大公约数:
1 短除法
2 欧几里得算法:辗转相除法
欧几里得游戏:两数相减
时间复杂度:
找基本语句,找输入规模
渐进时间复杂度:
时间复杂度的数量级
数量级越小越有计算价值,变化范围越小,越精确
求法:
1 化简至一项
Tn=3n-1小于等于3n=On
2 比较各项的数量级大小 抓大头
实际上,On一般小于10的9次方,用户大概等待2秒
音乐压缩技术
np问题
tsp问题
重要问题:
查找
排序 排序是为了查找
图 tsp问题 七桥问题
组合 在大量组合中寻找特定组合
几何 最近对问题 凸包问题
蛮力法
百元买百鸡
查找 顺序查找 串匹配
排序 选择排序 起泡排序
组合 0/1背包问题 任务分配问题
图 哈密顿回路 TSP问题
几何 最近对 凸包