数据结构与算法分析
第0章 学习提要
第0-1节 章节结构
- 离散数学和递归复习资料
- 处理算法分析
- 表 栈 队列
- 树
- 散列表
- 优先队列
- 排序
- 不相交集算法
- 图论算法
- 一般的问题求解技巧和算法设计
- 摊还分析
- 查找树算法 k-d树 和配对堆
第1章 引论
问题1
选择问题:
设有一组N个数而要确定其中第k个最大者。
分析:
- 读入一个数组排序,返回第k个
- 申请一个k数量的大小的数组,以此插入
问题:
- 含有一百万个元素的随机文件 k = 50 0000时
问题2
字谜问题:
二维数组
– | 1 | 2 | 3 | 4 |
1 | t | h | i | s |
2 | w | a | t | s |
3 | o | a | h | g |
4 | f | g | d | t |
找出任意方向任意长度的单词
如:this that fat two
分析:
- 对每个单词表中的单词 检查所有三元组(行 列 方向 –)
- 对每个四元组(行 列 方向 单词长度)在单词表中进行搜索。
问题:
- 大规模数据的搜索
数学知识复习
指数
- X^A * X^B = X ^ (A+B)
- X^A / X^B = X ^ (A-B)
- (X^A)^B = X^( A*B )
对数
- 定义X^A = B,当且仅当logx B = A
loga B = (logc B)/(logc A); C>0;
证明:
【令X=logc B Y=logc A,Z=loga B,】
【则C^X = B C^Y = A A^Z = B】
【(C^Y)^Z = C^x = B 故X=YZ 可得 Z = X/Y】logAB = log A + log B
证明:
【令 i^X = A*B i^Y=A i^Z=B 】
【从而 i ^ X =A * B = i^Y * i^Z = i ^ (Y+Z)】
【则 Y+Z = X 】log A/B = logA - logB
证明:
【令 i^X = A/B i^Y=A i^Z=B 】
【从而 i ^ X =A / B = i^Y / i^Z = i ^ (Y-Z)】
【则 Y-Z = X】log(A^B) = B log A
证明:
【令 c ^ X = A^B , c ^ Y = A】
【从而 c ^ X = c^Y^B = C^(Y*B) 】
【故 X = B * Y】logX < X(x>0)
- log1 = 0 log1024 = 10 log 1048576=20
级数
- 1+2+4+8+…+2^n = 2^(n+1) - 1;
- 1+A+A^2+…+A^n = ( A^(n+1) - 1 )/( A-1 )
- 若上式0
递归简论
- 基准情形
- 不断推进
- 设计法则
合成效益法则
- 打印问题:打印正整数(如 76234),提供方法Print(4);
- 分析:Printr if ( N>9 ) Printr(N/10) Print( N%10 );
- 归纳法证明递归程序正确(略)