算法(Algorithms)
1.算法(Algorithms):本质上是解决数学问题的办法
2.自然语言转计算机语言
3.欧几里得算法(GCD递归):3升桶,5升桶倒腾得一升水
1.问题转化:x * 3+y * 5 = 1
2.最大公约数GCD:存在整数x、y,满足ax+by=gcd(a,b)
3.辗转相除法:被除数除以余数直到余数为0
4.回推计算:从较小问题的解回推到原始问题的解
4.RSA加密:a*x(mod)b = 1
5.二分法:O(logn):主判断
6.大O记法:算法效率,n:操作数
7.旅行商算法:O(n!):确保所有可能性中的路程最短
8.递归:
1.基线条件:函数不再调用自己
2.递归条件:调用自己
9.快速排序:
1.基线条件:
(1):找出基线条件,条件尽可能简单
(2):不断缩小问题规模,直到符合基线条件
2.递归条件:
(1)调用自己,不断缩小问题规模
3.分治:选择基准值,找出小于基准值和大于基准值的子数组,对子数组进行快速排序
4.归纳证明:证明我能爬到梯子的最上面
(1):基线条件我已经站在了第一个横档上
(2):递归条件我在第二个横档上就能爬到第三个横档上,不断调用自己(有趣)
5.平均(最优)问题规模:O(n log n) 最差问题规模:O(n² )
10.合并排序算法:平均(最优)问题规模:O(log n) 最差问题规模:O(nlog n)
11.散列表:
1.映射一致性:输入字符串,必须得到一致的数字
2.字典形式,键值对,DNS解析:网址映射到IP地址
3.缓存:网站将数据记住,不再重新计算
4.散列冲突:两个元素映射到了同一个位置,存储一个链表,使用链表处理
1.低填装因子:(散列表元素数/位置总数)
2.调整长度:填充因子大于1,元素位置不够,在散列表中添加位置