算法罗列与特征
算法基本概念
定义:通过系统规范的方法或指令,以解决实际当中问题的一种策略机制。三个要求:有限,指令明确,切实有效。
递推法:按照特定规律计算序列中某个项值。
递归法:即迭代。关键概念-栈
二分查找
大O表示法
选择排序
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素
中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。
快速排序
对冒泡排序的改进,排序过程可以递归进行。不稳定排序。
散列表
即哈希表,根据关键码值(Key value)而直接进行访问的数据结构。通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
这个映射函数叫做散列函数(哈希函数),存放记录的数组叫做散列表。哈希表hashtable(key,value) 就是把Key通过一个固定的算法函数既所谓的哈希函数
转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。一种将任意长度的消息
压缩到某一固定长度的消息摘要的函数。
广度优先搜索
图算法,逐层搜索,差序格局。
迪克斯特拉算法
路径加权的广度优先算法。
贪婪算法
近似算法
动态规划
背包问题
树——二叉查找树,B树,红黑树,堆,伸展树
反向索引:一个散列表,将单词映射到包含它的页面。常用于创建搜索引擎
傅里叶变换——分离音频。
k最近邻算法
用法:创建推荐系统,特征抽取,回归
原理:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。
输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似(最邻近)的分类标签。
一般来说我们只选择数据集中前k个最相似的数据,这就是k-最近邻算法的k的出处,通常k是不大于20的整数。
最后,选择k个最相似数据中出现次数最多的那个分类,作为新数据的分类。两个特征向量距离公式:delta = sqrt((x1-y1)2+(x2-y2)2+…+(xn-yn)^2)
(x1,x2,…xn),(y1,y2,…yn)分别表示特征向量x和y。
其他算法
SHA算法:给定一个字符串,SHA返回其散列值;当前最安全的密码散列函数是bcrypt。局部不敏感;diffie-hellman算法
线性规划。
布隆过滤器:概率型数据结构。它提供的答案有可能不对,也很有可能对。hyperLogLog
MapReduce——分布式算法。
归并函数——将多项归并为一项。
映射——将一个数组转换为另一个数组。
并行算法——算法在多个内核中并行执行。