设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

统治世界的十大算法

2014-6-3 10:08| 发布者: joejoe0332| 查看: 3994| 评论: 0|原作者: 36kr|来自: 36kr

摘要: 软件正在吃掉世界,而软件的核心则是算法。算法千千万万,又有哪些算法属于“皇冠上的珍珠”呢?Marcos Otero 给出了他的看法。
  软件正在吃掉世界,而软件的核心则是算法。算法千千万万,又有哪些算法属于“皇冠上的珍珠”呢?Marcos Otero 给出了他的看法

  什么是算法?

通俗而言,算法是一个定义明确的计算过程,可以一些值或一组值作为输入并产生一些值或一组值作为输出。因此算法就是将输入转为输出的一系列计算步骤。


  —Thomas H. Cormen,Chales E. Leiserson,算法入门第三版


  简而言之,算法就是可完成特定任务的一系列步骤,它应该具备三大特征:


1、有限

2、指令明确

3、有效


  以下是 Marcos Otero 推荐的十大算法:


  1、归并排序、快速排序及堆积排序


 统治世界的十大算法1    

  最好的排序算法跟需求密切相关,很难评判。但是从使用上说,这三种的使用频率更高。

归并排序由冯•诺依曼于 1945 年发明。这是一种基于比较的排序算法,采用分而治之的办法解决问题,其阶是 O(n^2)。

快速排序可采用原地分割方法,也可采用分而治之算法。这不是一种稳定的排序算法,但对于基于 RAM(内存)的数组排序来说非常有效。

堆排序采用优先级队列来减少数据中的搜索时间。该算法也是原地算法,并非稳定排序。    
这些排序算法相对于以前的冒泡排序算法等有了巨大改进,实际上我们今天的数据挖掘、人工智能、链接分析及包括 web 在内的大多数计算工具都要感谢它们。


  2、傅里叶变换与快速傅里叶变换


 统治世界的十大算法2    

  我们的整个数字世界都使用这两个简单但非常强大的算法,其作用是将信号从时域转为频域或者反之。实际上,你看得到这篇文章得感谢这些算法。


  互联网、你的 WiFi、智能手机、电话、计算机、路由器、卫星,几乎所有内置有计算机的东西都会以各种方式使用这两算法。如果不研究这些算法,你就拿不到电子、计算或通信方面的学位。


  3、迪杰斯特拉(Dijkstra)算法


 统治世界的十大算法3 dijkstra


  Dijkstra是 一种图谱搜索算法。许多问题都可以建模为图谱,然后利用 Dijkstra 寻找两个节点之间的最短路径。如果没有 Dijkstra 算法,互联网的运营效率必将大大降低。虽然今天我们已经有了更好的寻找最短路径的解决方案,但出于稳定性的要求,Dijkstra 算法仍然被很多系统使用。



酷毙

雷人
1

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部