一、二分法查找
cs50中的撕电话本哈哈哈
大O表示法
二、选择排序
链表和数组
链表中存储了下一个元素的地址,从而使一系列随机的内存地址串在一起。
数组排列在一起,你可以推出他们的位置
选择排序
遍历所有列表,然后找出想要排的东西,添加到新列表中
再次执行遍历,选择,添加新列表
速度为O(n^2)
三、递归
基线条件和递归条件
def countdown(i):
print i
if i <=0: #基线条件
return
else: #递归条件
countdown(i-1)
栈的概念
四、快速排序
分而治之
找基准值
五、散列表
既我们一般用的列表值
六、广度优先搜索
七、狄克斯特拉算法
权重
加权图
八、贪婪算法
每步都寻找最优解
NP完全问题,还没有找到快速解决方法,最佳选择是使用近似算法
九、动态规划
最长公共子串
十、K最近邻算法
十一、
列举其他
a、树
b、反向索引
c、傅里叶变换
d、并行算法
e、MapReduce
f、布隆过滤器和hyperloglog
g、SHA算法
h、局部敏感的散列算法
i、diffie-hellman密钥交换
j、线性规划和simolex算法