全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
当今世界,已经被发现或创造的经典算法数不胜数。如果,一定要投票选出你最看重的十大算法,你会作何选择列?有国外网友在StackExchange上发起过投票,让人们投票选出心目中最为经典的算法,最终产生了下面得票数最高的十大经典算法(投票数统计截止到2011年3月7日):第十名:Huffman coding(霍夫曼编码) 霍夫曼编码(Huffman Coding)是一种编码方式,是一种用于无损数据压缩的熵编码(权编码)算法。1952年,David A. Huffman在麻省理工攻读博士时所发明的,并发表于一种构建极小多余编码的方法(A Method for the Construction of Minimum-Redundancy Codes)一文。第九名:Binary Search (二分查找) 在一个有序的集合中查找元素,可以使用二分查找算法,也叫二分搜索。二分查找算法先比较位于集合中间位置的元素与键的大小,有三种情况(假设集合是从小到大排列的): 1.键小于中间位置的元素,则匹配元素必在左边(如果有的话),于是对左边的区域应用二分搜索。 2.键等于中间位置的元素,所以元素找到。 3.键大于中间位置的元素,则匹配元素必在右边(如果有的话),于是对右边的区域应用二分搜索。另外,当集合为空,则代表找不到。第八名:Miller-Rabin作的类似的试验测试 这个想法是利用素数的性质(如使用费马大定理)的小概率寻找见证不数素数。如果没有证据是足够的随机检验后发现,这一数字为素数。第七名:Depth First Search、Breadth First Search(深度、广度优先搜索) 它们是许多其他算法的基础。关于深度、广度优先搜索算法的具体介绍,请参考此文:教你通透彻底理解:BFS和DFS优先搜索算法。第六名:Gentrys Fully Homomorphic Encryption Scheme(绅士完全同态加密机制)算法。 此算法很漂亮,它允许第三方执行任意加密数据运算得不到私钥(不是很了解)。第五名:Floyd-Warshall all-pairs最短路径算法 关于此算法的介绍,可参考我写的此文:几个最短路径算法比较(/v_JULY_v/archive/2011/02/12/6181485.aspx)。d: 二维数组. di,j最小花费、或最短路径的邻边。for k from 1 to n: for i from 1 to n: for j from 1 to n: di,j = min(di,j, di,k + dk,j)第四名:Quicksort(快速排序) 快速排序算法几乎涵盖了所有经典算法的所有榜单。它曾获选二十世纪最伟大的十大算法(参考这:细数二十世纪最伟大的10大算法)。关于快速排序算法的具体介绍,请参考我写的这篇文章:一之续、快速排序算法的深入分析,及十二、一之再续:快速排序算法之所有版本的c/c+实现。第三名:BFPRT 算法 1973 年,Blum、Floyd、Pratt、Rivest、Tarjan一起发布了一篇名为 “Time bounds for selection” 的论文,给出了一种在数组中选出第k大元素平均复杂度为O(N)的算法,俗称中位数之中位数算法。这个算法依靠一种精心设计的 pivot 选取方法,即选取中位数的中位数作为枢纽元,从而保证了在最情况下的也能做到线性时间的复杂度,打败了平均O(N*logN)、最坏 O(n2) 复杂度的快速排序算法。 事实上,这个所谓的BFPRT,就是本blog中阐述过的快速选择SELECT算法,详情请参考下列博文:第三章、寻找最小的k个数、十四、快速选择SELECT算法的深入分析与实现。在我的这两篇文章中,给出了此快速选择SELECT算法,借助选取数组中中位数的中位数作为枢纽元,能做到最坏情况下运行时间为O(N)的复杂度的证明。 我在这里简单介绍下在数组中选出第k大元素的时间复杂度为O(N)的算法: 类似快排中的分割算法:每次分割后都能返回枢纽点在数组中的位置s,然后比较s与k的大小若大的话,则再次递归划分arrays.n,小的话,就递归arrayleft.s-1 /s为中间枢纽点元素。否则返回arrays,就是partition中返回的值。 /就是要找到这个s。找到符合要求的s值后,再遍历输出比s小的那一边的元素。 各位还可参考在:算法导论上,第九章中,以期望线性时间做选择,有寻找数组中第k小的元素的,平均时间复杂度为O(N)的证明。原程序随机选取数组中某一元素作为枢纽元,最后可证得程序的期望运行时间为O(n),且假定元素是不同的。第二名:Knuth-Morris-Pratt字符串匹配算法 关于此算法的介绍,请参考此文:六、教你从头到尾彻底理解KMP算法。KMP算法曾经落选于二十世纪最伟大的十大算法,但人们显然不能接受,如此漂亮、高效的KMP算法竟然会落选。所以,此次最终投票产出生,KMP算法排到了第二名。第一名:Union-find并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 年中职家具设计与制造类(家具设计基础)试题及答案
- 2025福建福州市园开新筑开发建设有限公司项目建设合同制人员招聘10人笔试参考题库附带答案详解(3卷)
- 2025福建三明建宁县莲连好城投公司招聘2人笔试参考题库附带答案详解(3卷)
- 未来五年无线广播电视网数据及信息服务企业数字化转型与智慧升级战略分析研究报告
- 2025湖南长沙水业集团有限公司秋季社会招聘26人笔试历年常考点试题专练附带答案详解
- 未来五年MOSFET器件企业ESG实践与创新战略分析研究报告
- 未来五年水果加工企业制定与实施新质生产力战略分析研究报告
- 未来五年园林艺术陶瓷制品行业直播电商战略分析研究报告
- 未来五年手持平板电脑显卡企业数字化转型与智慧升级战略分析研究报告
- 2025浙江温州市公用事业发展集团有限公司面向高校招聘31人(第一批)笔试参考题库附带答案详解(3卷)
- 民族学概论课件
- 2024年湖南石油化工职业技术学院单招职业技能测试题库及答案
- 《公差配合与技术测量》课件-第2章 第5 部分(公差与配合的选用)
- 2020年科学通史章节检测答案
- 长期卧床患者健康宣教
- 2025年湖南省初中学业水平考试中考物理真题试卷(中考真题+答案)
- 2025国家义务教育质量监测试题(含答案)
- 2025至2030全球及中国DDI(DNSDHCPIPAM)解决方案行业发展趋势分析与未来投资战略咨询研究报告
- 企业管理绿色管理制度
- 2025至2030年中国克令吊行业投资前景及策略咨询报告
- 2025年人工智能训练师(三级)职业技能鉴定理论考试题库(含答案)
评论
0/150
提交评论