第一章 算法简介
- 查找算法 - 二分查找
- 算法的运行时间 - 大O表示法
- O(log n)对数时间,包括二分查找
- O(n),线性时间,包括简单查找
- O(n * log n),快速排序
- O(n2),选择排序
- O(n!),旅行商问题3
- 算法设计方法 - 递归
- 算法的速度并非时间,而是操作数的增速
第二章 选择排序
- 最基本的数据结构 - 数组和链表
- 使用数组意味着使用连续的内存地址,擅长随机访问
- 链表使一连串的随机内存地址串在一起,擅长插入和删除
- 在同一个数组中,所有元素的类型必须都相同
- 元素的位置成为索引
第三章 递归
- 每个递归函数都有两部分:基线条件(函数不再调用自己避免形成无限循环)和递归条件(函数调用自己)
- 调用栈:压入(插入)和弹出(删除并读取)
- 所有函数调用都进入调用栈
- 调用栈可能很长,这将占用大量的内存
第四章 快速排序
- 快速排序使用分而治之的策略DC(递归式问题解决办法)
- 将问题逐步分解,基线条件很可能是空数组或只包含一个元素的数组
第五章 散列表
- 散列表 - 最有用的基本数据结构之一,内部机制(实现、冲突和散列函数)
- 散列函数将输入映射成数字:它必须是一致的、他应将不同的输入映射到不同的数字、只返回有效索引
- 散列表适用于模拟映射关系、防止重复、缓存记住数据
- 冲突:散列函数总是将不同的键映射到数组的不同位置,若两个键映射到同一个位置,在该位置存储一个链表
- 散列表的填装因子:散列表包含的元素数/位置总数,一旦填装因子大于0.7,就调整列表的长度
第六章 广度优先搜索
- 广度优先搜索可以找出两样东西之间的最短距离
- 使用图来建立问题模型(图由节点和边组成)
- 使用广度优先搜索解决问题
- 按添加顺序进行检查,可实现该目的数据结构 - 队列,入队和出队,是一种先进先出的数据结构FIFO,而栈是后进先出的LIFO
- 有向图与无向图;没有箭头直接相连的节点互为邻居
- 对于检查过的人,务必不要再去检查,否则可能导致无限循环
第七章 迪克斯特拉算法
- 加权图 - 提高或降低某些边的权重
- 广度优先搜索找段数最少的路径;狄克斯特拉算法找出耗时最短的路径
- 找出最便宜的节点,即可在最短时间内到达的节点
- 更新该节点的邻居的开销
- 重复这个过程,直到对图中的每个节点都这样做了
- 计算最终路径
- 无向图意味着两个节点彼此指向对方,其实就是环,狄克斯特拉算法只适用于有向无环图DAG,也不适用于负权边
- 若图中包含负权边,请使用贝尔曼-福德算法
第八章 贪婪算法
- 没有快速算法的问题(NP完全问题)
- 近似算法 - 快速找到NP完全问题的近似解
- 贪婪策略 - 一种非常简单的问题解决策略
- 贪婪算法:每步都采取最优解,最终得到就是全局最优解
- 面临NP完全问题。最佳大做法是使用近似算法,贪婪算法易于实现、运行速度快
- NP完全问题识别:
- 元素较少算法运行速度很快,随着元素数量增加,速度变得很慢
- 涉及所有组合的问题
- 不能将问题分成小问题,必须考虑各种可能的情况
- 问题涉及序列且很难解决
- 问题涉及集合且很难解决
- 问题可转换成集合覆盖问题或旅行商问题
第九章 动态规划
- 动态规划解决子问题并使用这些答案来解决大问题;但仅当各子问题是离散的,即不依赖其他子问题是,动态规划才管用
- 需要在给定约束条件下优化某种指标,动态规划很有用
- 每种动态规划解决方案都涉及网格
- 单元格中的值通常就是你要优化的值
- 每个单元格都是一个子问题,因此你要考虑如何将问题分解成子问题
- 没有放之四海而皆准的计算动态规划解决方案的公式
第十章 K最近邻算法
- KNN(K最近邻算法)创建分类系统
- 学习特征抽取
- 回归就是预测结果
- 特征抽取意味着将物品转换一系列可比较的数字
- 能否挑选合适特征是关系KNN算法的成败
第十一章 接下去如何做
- 树(二叉查找树、B树、红黑树、堆)
- 反向索引(单词映射到包含它的页面,创建搜索引擎)
- 傅里叶变化(MP3/DNA分析、地震预测)
- 并行算法(并行性管理开销、负载均衡)
- MapReduce(分布式算法)
- 布隆过滤器和HyperLogLog(概率型数据结构:可能出现错报的情况;不可能出现漏报的情况)
- SHA算法(安全散列算法,单向计算密码,局部不敏感;最安全的密码散列函数是bcrypt)
- Diffie-Hellman密钥交换(无需双方知道加密算法,要破解密码很难,公钥和私钥)
- 线性规划(simplex.最酷的算法,在给定约束条件下最大限度的改善指定的指标)
该博客介绍了多种算法。包括查找算法如二分查找,排序算法如选择排序、快速排序,还有递归、散列表、广度优先搜索、迪克斯特拉算法等。阐述了各算法的原理、适用场景,如散列表用于模拟映射关系,广度优先搜索找最短距离等,还提及后续可了解的算法知识。
1万+

被折叠的 条评论
为什么被折叠?



