1:二分查找:前提:一个有序数组, 方法:每次取中间数,对比大小。时间复杂度:lgn
大O:时间复杂度计算表示方法
耗时排序:Olgn/On/On*lgn/On2/On!
Olgn:对数时间,示例:二分查找
On:线性时间,如简单查找
On*lgn:快速排序
On2:选择排序
On!:旅行家问题
2:选择排序:挨个对比,On2
3:快速排序:分而治之思想,将无序数组拆解到最小1个元素,再递归往排序。最差情况 On2 平均On*lgn
4:散列表:hash,数组+链表
5:广度优先搜索(图):
多个数组+队列+已查询过的数据(避免环状死循环)
可用于:全量遍历查询 时间复杂度:O(V+E)V:顶点数 E:边数
检查过的务必去重,避免无限循环
6:狄克斯特拉算法:
广度优先适用于在非加权图中查找最短路径
狄克斯特拉适用于加权图中查找最短路径
只有权重为正,算法才有效,权重为负,使用贝尔曼-福德算法
7:贪婪、贪心算法
核心思想:局部最优,全局近似最优
什么是NP完全问题?
NP完全问题(NP-C问题),是世界七大数学难题之一。 NP的英文全称是Non-deterministic Polynomial Complete的问题,即多项式复杂程度的非确定性问题
8:动态规划:
在给定的约束条件先,优化某种指标
动态规划都设计网格
每个网格的单元都是一个子问题,因此需要考虑将问题分解为子问题
背包问题:问题可以分解为小背包,行的排序不会影响结果
9:K最近邻算法
1:分类:区分2个物品,需要对比2个相似度,相似度的计算,数学维度是根据2者在坐标上的距离(N维度),多维的计算可以是向量夹角度数,余弦相似度。
2:推荐系统:找到邻近的数据,相互推荐,怎么找到邻居?通过分类,以什么维度分类?通过特征提取,怎么提起?1:用户打标、打分等2:朴素贝叶斯算法3:图像视频领域使用OCR 光学字符识别)特征
3:KNN用于分类和回归、需要考虑最近的邻居
4:分类就是编组,
5:回归就是预测结果
6:特征抽取意味着将物品转换为数字
7:特征选取决定KNN算法的成败