算法图解end:10种算法简介

1.树

二叉查找树:
在这里插入图片描述
二叉查找树的左边节点都比他小,右边节点都比他大从根节点开始逐步往下找

二叉查找树的查找,删除,插入速度都是 O ( l o g n ) O(log n) O(logn)
而数组只有查找速度是 O ( l o g n ) O(log n) O(logn) 删除和插入的速度是 O ( n ) O(n) O(n)

缺点:不能随机访问;遇到倾斜的树时 效率不高

举例:

  • 处于平衡状态的特殊二叉查找树:红黑树
  • 数据库用B树来存储数据
  • 伸展树……

2 反向索引

搜索引擎的工作原理:
一个散列表,将单词(键)映射到包含它的页面(值)。这种数据结构被称为反向索引(inverted index)未提及正向索引

3 傅里叶变换

傅里叶变换非常适合用于处理信号,还可以用来地震预测和DNA分析等


以下三种算法斗鱼可扩展性和海量数据处理有关:

4 并行算法

为提高算法效率,让处理数据在多个内核中并行的执行。
并行算法设计和提升比较困恼,因为:
①并行性管理开销
②负载均衡

5 MapReduce

分布式算法,让算法在多台计算机上运行。可以通过开源工具Apache Hadoop来使用它。
分布式算法非常适合用于在短时间内完成海量工作,其中的MapReduce基于两个简单的理念:映射(map)函数和归并(reduce)函数

6 布隆过滤器和HyperLogLog

  • 布隆过滤器是一种概率型数据结构,它提供的答案有可能不对,但很可能是正确的。

在搜集未发布过的网站时。可能出现错报的情况,即Google可能指出“这个网站已搜集”,但实际上并没有搜集;不可能出现漏报的情况,即如果布隆过滤器说“这个网站未搜集”,就肯定未搜集。

布隆过滤器的优点在于占用的存储空间很少

  • HyperLogLog近似地计算集合中不同的元素数,与布隆过滤器一样,它不能给出准确的答案,但也八九不离十,而占用的内存空间却少得多。

面临海量数据且只要求答案八九不离十时,可考虑使用概率型算法!

7 SHA算法

一种散列函数是安全散列算法(secure hash algorithm,SHA)函数

给定一个特定的字符串 返回其散列值,对于每个不同的字符串,SHA生成的散列值都不同

8 局部敏感的散列算法

可使用Simhash,这样可以根据两个散列值来判断两个字符串的相似度

9 Diffie-Hellman 密钥交换

对消息进行加密,以便只有收信人能看懂。

Diffie-Hellman 算法解决了下面两个问题:

  • 双方无需知道加密算法
  • 要破解加密的消息很难

它使用两个密钥:公钥和私钥

该算法的替代者RSA

10 线性规划

所有图算法都可以用线性规划来实现。
线性规划是一个宽泛的框架,图问题只是其中一个子集。
线性规划可以使用Simplex算法。
最优化和运筹学讲的比较详细。

11.参考资料

《算法图解》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值