一周极客热文:程序员必须知道的10大基础实用算法及其讲解

程序员必须知道的10大基础实用算法及其讲解,包括:

  1. 快速排序算法;
  2. 堆排序算法(Heapsort):是指利用堆这种数据结构所设计的一种排序算法;
  3. 归并排序(Merge sort,台湾译作:合并排序):是建立在归并操作上的一种有效的排序算法;
  4. 二分查找(线性查找算法):是一种在有序数组中查找某一特定元素的搜索算法;
  5. BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度;
  6. 深度优先搜索算法(Depth-First-Search):是搜索算法的一种;
  7. 广度优先搜索算法(Breadth-First-Search):是一种图形搜索算法;
  8. 戴克斯特拉算法(Dijkstra’s algorithm);
  9. 动态规划算法(Dynamic programming);
  10. 朴素贝叶斯分类算法是一种基于贝叶斯定理的简单概率分类算法。

上面的这篇文章为本周的热门文章,有着不错的评论。具体的算法步骤详情请移步原文阅读并可参与讨论。

一、 Eclipse 4.4 将于 6 月 25 日发布,代号 Luna

代号为 Luna 的下一个 Eclipse 的主要版本 4.4 将于 6月25日 发布。新版本值得关注的特性包括:

  • 完全支持 Java™ 8
  • 提供全新的黑色主题,默认显示行号,允许隐藏 quick access 工具条
  • Sirius allows architects to easily create their own graphical modeling workbenches by leveraging the Eclipse modeling technologies, including Eclipse Modeling Framework (EMF) and Graphical Modeling Framework (GMF)
  • Equinox includes a full implementation of the R6 Core Framework as well as several compendium service implementations
  • ECF's implementation of OSGi Remote Service/Remote Service Admin standard has been enhanced to use Java 8's CompleteableFuture for asynchronous remote services.
  • Code Recommenders integrates the Snipmatch code snippet search engine and adds the ability to easily contribute new snippets to a shared repository.
  • The new QVTi debugger extends the new OCL debugger.

二、 Java 8新特性终极指南

Java 8已经公布有一段时间了,种种迹象表明Java 8是一个有重大改变的发行版。文章把所有Java 8的重要特性收集整理成一篇单独的文章,主要有以下几个方面:

  • Java语言的新特性——Lambdas表达式与Functional接口、接口的默认与静态方法、方法引用、重复注解、更好的类型推测机制、扩展注解的支持
  • Java编译器的新特性——参数名字
  • Java 类库的新特性——Optional、Streams、Date/Time API (JSR 310)、JavaScript引擎Nashorn、Base64、并行(parallel)数组、并发(Concurrency)
  • 新增的Java工具——Nashorn引擎: jjs、类依赖分析器: jdeps
  • Java虚拟机(JVM)的新特性

三、程序员长期保持身心健康的几点建议

  1. 要学会走开
  2. 在家少编程
  3. 少叫外卖,中午出去吃
  4. 有一个或几个非技术的兴趣爱好,或者体育锻炼项目
  5. 休假
  6. 最最最最关键,要有一个妹子

四、 程序员自我提高的几点建议 很实诚

中国程序员的成长是与其学习环境相关,据统计,现时做计算机软件开发的人员65%是大专及本科学历,15%是来自于其他的培训机构。可见一个开发人员大致的学习经历和初步经验来自于大学。下面是针对程序员自我提高的几点建议:

  1. 提高文档编写能力
  2. 养成好的编码规范和编码习惯
  3. 提高对软件需求的理解
  4. 复用性和模块化思想
  5. 锻炼自己的测试能力
  6. 问题是最好的学习机会

五、 Java 8中几个不易察觉的错误

  • 不小心重用了流
  • 不小心创建了一个“无限”流
  • 不小心创建了一个“隐藏的”无限流
  • 不小心创建了一个”隐藏”的并行无限流
  • 操作的顺序错误
  • 使用过滤器来遍历文件系统
  • 修改流内部的集合
  • 忘了去消费流
  • 并行流死锁

引入了流和函数式编程之后,我们开始会碰到许多新的难以发现的BUG。这些BUG很难避免,除非你见过并且还时刻保持警惕。你必须去考虑操作的顺序,还得注意流是不是无限的。

流是一个非常强大的工具,但也是一个首先得去熟练掌握的工具。

六、 Google I/O 2014大会很有可能发布的10大惊喜

一年一度的谷歌 Google I/O 开发者年会将在本月的 25 日和 26 日在美国的旧金山举行,今年的 Google I/O 大会又将带给大家什么惊喜呢?请看:

  • Nexus 8
  • 安卓5.0
  • 谷歌眼镜正式上市
  • Android Wear
  • Silver项目
  • Project Ara模块化手机
  • Android车载系统
  • Google Fit服务
  • Nest——Nest或许会带来修复另一款烟雾探测器Protect的相关消息
  • Google Fiber

上期回顾:

一周极客热文:8张图理解Java

一周极客热文由极客头条主编根据文章的PV、顶的数量和评论数,选出一定数量的热门文章,在周一准时呈现给大家。欢迎大家踊跃发帖,相关要求请点这里

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏牛客网

拼多多、网易、华为面经

统共面试了三家公司,本来打算偷懒不打算写面经,不过还是写一下吧,如果能帮到人的应该也算是件好事,具体的事件太久忘了

2141
来自专栏CSDN技术头条

黑客与C语言

“黑客”这个词想必我们已经如雷贯耳了。我们一听到黑客通常在大脑中的印象就是一群穿着黑衣,躲在小屋里偷偷用着数台电脑针对某组计算机,神不知鬼不觉地进行攻击。他们通...

9288
来自专栏封碎

两个最容易被人忽略的基本代码优化技术 博客分类: 经典文章转载 算法Android编程D语言工作

      本文转载自http://sd.csdn.net/a/20100921/279732.html

903
来自专栏程序员叨叨叨

6.4 移位操作符

Cg语言中的移位操作符,功能和C语言中的一样,也可以作用在向量上,但是向量类型必须是int类型。例如:

1242
来自专栏工科狗和生物喵

【我的漫漫跨考路】数据结构之堆栈的线性实现

正文之前 ? 昨天晚上阶段性的完成了一部分数学的复习(一元积分学终于搞定了,后面的貌似没这么难了),所以今天打算撸一撸代码,结合前几天写的链表实现线性存储,今天...

2916
来自专栏程序人生

谈谈状态机

题记:上周做 BBL 里讲了我们 Tubi TV 内部做 DSL 的一些简单实践,大家反馈不错。有同事建议我给大家先补补 FSM,之后再进阶 CFG,可能会更顺...

3737
来自专栏逸鹏说道

借网站日记分析~普及一下Pandas基础

对网站日记分析其实比较常见,今天模拟演示一下一些应用场景,也顺便说说Pandas,图示部分也简单分析了下

673
来自专栏三丰SanFeng

基于Linux整形时间的常用计算思路

上一次分享了Linux时间时区详解与常用时间函数,相信大家对Linux常见时间函数的使用也有了一定的了解,在工作中遇到类似获取时间等需求的时候也一定能很好的处理...

21810
来自专栏牛客网

cvte面经

一面:现场面去的很早明显焦虑并问不到面经(50分钟) (1)自我介绍这里介绍完提到自己熟悉的知识,项目 (2)项目介绍项目中遇到的难点如何解决的 (3)集合框架...

3917
来自专栏令仔很忙

UML总结

   描述类与类之间的使用与被使用关系,而其使用关系具有偶然性的、临时性的、非常弱的,但是被使用的一方会影响到使用的一方,比如说:“动物”和“氧气”,动物的生活...

971

扫码关注云+社区

领取腾讯云代金券