记得去年在纸上写过一份这样的东西,迎来的是exhaustive fail.需要明确复习重点是数据结构和算法, 考场上要注意出题规律和草稿的清晰性. 简单复习大概用了6个番茄钟.
1.表达式树
[中缀] (a + b) * c + d * c
(((a + b) * c) + (d * c))
[前缀] +(*(+(a b) c) * (d c))
+ * + a b c * d c
[计算方法1] 压栈(前缀 -> 从后向前)
[计算方法2] 括号(opt后) -> 中缀
2.二分查找的平均次数 log(n+1)-1
3.heap的实现
[up] while(k > 1) 比较 交换(h[k], h[k/2])
[down] while(2 * k <= n) 比较 交换(h[k], h[2k + 1(小于n的话)])
4.排序算法的稳定性
[稳定]插入排序、冒泡排序、归并排序、分配排序(桶式、基数)
[不稳定的]直接选择排序、堆排序、shell排序、快速排序都是不稳定的排序算法。
[稳定排序]http://www.jpk.pku.edu.cn/pkujpk/course/sjjg/chapter7/01/05.html
[排序原理]http://hi.baidu.com/cuifenghui/blog/item/0587932b039557f9e7cd4051.html
5.出栈序列
一个数列满足条件,当且仅当每一段单调递减数列要么不存在空缺(即为公差-1的等差数列),要么它的空缺在之前全部已经出现。
[充要条件]若出栈序列合法,则一定不存在1<=i<j<k<=n,使s[j]<s[k]<s[i]
6.邻接表的插入操作(链表的插入)
next[e] = first[u[e]]; first[u[e]] = e;
7.逻辑表达式恒值
注意符号, 转化为分情况表示的函数
8.叉积的计算(特别注意第二个负号)
|i j k|
|a1 a2 a3|=i|a2 a3|-j|a1 a3|+k|a1 a2|
|b1 b2 b3| |b2 b3| |b1 b3| |b1 b2|
9.阅读程序注意意图, 草稿的清晰度(减少乱划)
[RAM]http://baike.baidu.com/view/3558.htm
随机存储: 访问时间与位置无关
[Hash]http://www.nocow.cn/index.php/%E6%95%A3%E5%88%97%E8%A1%A8
[拓扑排序(DAG)]http://zh.wikipedia.org/wiki/%E6%8B%93%E6%92%B2%E6%8E%92%E5%BA%8F\