10种算法
1、二叉查找树
节点:左子节点的值都比它小,而右子节点的值都比它大
插入后无需排序,

2、反向索引
搜索引擎的工作原理,创建一个散列表,键为“搜索词”,值为“包含搜索词的界面”;

3、傅里叶变换
“给它一杯冰沙,它能告诉你其中包含哪些成分”,例如:给定一首歌曲,傅里叶变换能够将其中的各种频率分离出来。使用傅里叶变换可创建类似于“酷狗”这样的音乐识别软件。

4、并行算法
为了提高算法的速度,我们需要让它们能够在多个内核中并行地执行。例如:对数组进行排序,在最佳情况下,排序算法的速度大致为O(nlongn)。但是在快速排序的并行版本所需的时间为O(n)。

并行算法设计的速度提升并非线性的,因此即便你的笔记本电脑装备了两个而不是一个内核,算法的速度也不可能提高一倍,其中的原因有两个:
a、并行性管理开销。假设你要对一个包含1000个元素的数组进行排序,如何在两个内核之间分配这项任务呢?如果让每个内核对其中500个元素进行排序,再将两个排好序的数组合并成一个有序数组,那么合并也是需要时间的。
b、负载均衡。假设你需要完成10个任务,因此你给每个内核都分配5个任务。但分配给内核A的任务都很容易,10秒钟就完成了,而分配给内核B的任务都很难,1分种才完成。这意味着有那么50秒,内核B在忙死忙活,而内核A去闲得很,你如何均匀地分配工作,让两个内核都一样忙呢?
要改善性能和可扩展性,并行算法可能是不错的选择!

5、MapReduce(Apache Hadoop)
分布式算法,可让算法在多台计算机上运行。
例如:你有一个数据库表,包含数十亿乃至数万亿行,需要对其执行复杂的SQL查询。在这种情况下,你不能使用MySQL,因为数据表的行数超过十亿后,它处理起来将很吃力。相反,你需要通过Hadoop来使用MapReduce!
分布式算法非常适合用于在短时间内完成海量工作,其中的MapReduce基于两个简单的理念:映射(map)函数和归并(reduce)函数。
映射函数:它接受一个数组,并对其中的每个元素执行同样的处理,是将一个数组转换为另一个数组。
例如:如果有100台计算机,而map能够自动将工作分配给这些计算机去完成就好了。这样就可同时下载100个页面。下载速度将快得多!
归并函数:将一个数组转换为一个元素。
MapReduce使用这两个简单概念在多台计算机上执行数据查询。数据集很大,包含数十亿行时,使用MapReduce只需几分钟就可获得查询结果,而传统数据库可能要耗费数小时。

6、布隆过滤器和HyperLogLog
恶意网站过滤(海量数据处理)。
布隆过滤器:概率型数据结构。它提供的答案有可能不对,有可能正确。使用散列表时,答案绝对可靠,使用布隆过滤器时,答案却是很可能是正确的,但是不可能出现漏报的情况,即如果布隆过滤器说“这个网站未搜集”,就肯定未搜集。
优点:在于占用的存储空间很少。

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

7、SHA算法
安全散列算法(SHA)函数。给定一个字符串,SHA返回其散列值(字符串)。用于创建的散列表的散列函数根据字符串生成数组索引。
“hello”——》2cf24·····
对于每个不同的字符串,SHA生成的散列值都不同;

a、比较文件: 根据文件的SHA散列值进行比较
b、检查密码:根据SHA散列值进行比较

8、局部敏感的散列算法
SHA还有一个重要特征,那就是局部不敏感的。有时候,希望散列函数是局部敏感的,在这种情况下,可使用Simhash。如果你对字符串做细微的修改,Simhash生成的散列值也只存在细微的差别。
例如:
Google使用Simhash来判断网页是否已搜索;
使用Simhash来判断论文是否是从网上抄的;
使用Simhash来检查上传的内容是否侵权;

9、Diffie-Hellman密钥交换
公钥与私钥

10、线性规划
线性规划用于在给定约束条件上最大限制地改善指定的指标(目标);
Simplex算法

算法图解-----十种常用算法相关推荐

  1. 计算机 五大算法类型,计算机算法设计五大常用算法的分析及实例.docx

    标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N] 标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N] 计算机算法设计五大常用算法的分析及实例 摘要 算 ...

  2. 十种常用算法之分治算法(java版)

    十大常用算法的完整实现 一.二分查找算法:https://blog.csdn.net/weixin_46635575/article/details/121532149 二.分治算法:https:// ...

  3. 算法图解第一章——算法简介

    目录 前言 一.算法简介 1.引言 1.什么是算法 2.需要具备的知识 2.二分查找 1.什么是二分查找 2.举个例子,猜数字 3.对数函数 3.大 O 表示法 1.定义 2.一些常见的大 O 运行时 ...

  4. halcon算法思路_halcon常用算法

    halcon常用算法 1.read_image (Image, F:/image/001.bmp ) 读入图像 2.threshold (Image, region, 100, 200) 阈值分割,获 ...

  5. 分治法的关键特征_算法系列之常用算法之一----分治算法

    一.基本概念 在计算机科学中,分治法是一种很重要的算法.分治算法,字面上的解释是"分而治之",分治算法主要是三点: 1.将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问 ...

  6. 【算法】五大常用算法最全面总结

    分治算法 一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题-- ...

  7. 机器学习数据挖掘十大经典算法 数学建模常用算法

    国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006 (香港召开)年12月评选出了数据挖掘领域的十大经典算法.不仅 ...

  8. 图解算法:五大常用算法

    目录 第一章 递归算法介绍 第二章 递归算法应用 2.1.求阶乘 2.2.求年龄 第三章 回溯算法介绍 第四章 回溯算法应用 4.1.走迷宫 4.2.八皇后 第五章 分治算法介绍 第六章 分治算法应用 ...

  9. 算法设计之—常用算法之-分支界定法

    在进行机器学习特诊选择的时候,一种不需要进行遍历仍能取得最优解的方法为分支定界(branch and bound)法.这是一种自顶向下的方法,即从包含所有候选特征开始,逐步去掉不被选择的特征.此种方法 ...

  10. Dinic算法----最大流常用算法之一

    --没有什么是一个BFS或一个DFS解决不了的:如果有,那就两个一起. 最大流的$EK$算法虽然简单,但时间复杂度是$O(nm^2)$,在竞赛中不太常用. 竞赛中常用的$Dinic$算法和$SAP$, ...

最新文章

  1. r语言remarkdown展示图_使用R语言包circlize可视化展示blast双序列比对结果
  2. 手写单隐层神经网络_鸢尾花分类(matlab实现)
  3. SQL 用一个表的数据更新另一张表
  4. 股市最好用的大数据软件_最实用的5款炒股软件
  5. 什么软件可以换电脑ip地址
  6. uniapp分销商城源码开发
  7. 小程序随笔(关于香港手机号无法接收短信)
  8. 街头卖艺里的故事,你还会相信吗?
  9. 6.2.1邻接矩阵法
  10. 教你App如何上架应用宝----腾讯开放开发平台
  11. 写代码写文章勿有功利心
  12. opencv手势识别(3_SVM算法识别)
  13. 7-214 泰勒级数展开近似sin(x)的值7-215 求班级平均分7-216 同数异形体
  14. javaSe探赜索隐IO--File
  15. SpringSecurity(安全)
  16. 如何定制B2C电商网站
  17. 五十四 九环山遇鬼(下)我在软件园的那些日子里
  18. 关于BBS的一些资料
  19. 软件测试睡眠原理,智能手环检测睡眠质量的原理?
  20. linux下虚拟机开机重置修改密码,完整步骤

热门文章

  1. 安卓简单实现百度地图
  2. Tuxedo 中间件学习心得 一
  3. K60(Cortex-M4)开源开发探索(一)—— K60简介
  4. 实验一 组合逻辑电路的设计与测试
  5. 深入浅出MFC学习笔记(第三章:MFC六大关键技术之仿真:命令传递) .
  6. 光立方程序详解_C ++程序使用宏查找数字的立方
  7. 电脑蓝屏代码查询软件
  8. Spring Boot 1.5.2.RELEASE中文版
  9. 毕业设计校园信息发布平台网站源码
  10. 软件测试之易用性测试