Java 数据结构及算法系列 0 - 开篇

其实注册账号也有一段时间,之前也在其他平台陆陆续续写了些博客。个人在看博客 / 文章时,偏好读系列文章,由浅入深,知根知底。自己也一直希望能有如此的毅力去坚持写一些系列文章,于是便有了这个系列的想法。

数据结构及算法是个非常庞大的内容,也不知道这个系列最终能到第多少篇章,但我会尽我所能,记录自己的一些认识及学习过程,也希望各位看官多多留言斧正 :)

开篇之章的 blabla 到此为止,虽然是第 0 篇,也希望给大家带来一些干货!

什么是数据结构和算法

根据维基百科:数据结构 (data structure) 是计算机中存储、组织数据的方式;算法 (algorithm) 是一系列解决问题的清晰指令。用合适的数据结构储存数据,能让算法运行更加高效。

算法复杂度和大O表示法

人类对于速度有着天生的追求,对于算法,也就是解决问题的方案,我们也是希望更快、更快和更快!评价一个算法是否优秀,一般是从时间和空间两个纬度来入手,相对应的也就是时间复杂度及空间复杂度。而在这两者之间,我们往往更关心的是时间复杂度。在计算机领域,一般用大O表示法来表述算法的复杂度。

还是我们的老朋友 -- 维基百科:大O符号 (Big O notation),又称为渐进符号,是用于描述函数渐近行为的数学符号。更确切地说,它是用另一个 (通常更简单的) 函数来描述一个函数数量级的渐近上界。维基百科上举的一些常见的算法及其复杂度如下图:

常见算法及其复杂度

在本系列的后续文章中,大O表示法会频繁出现,这里先给大家留个印象,随着文章的更新,我们也会慢慢深入其中。这里还有一个 网站 提供了不少算法的复杂度图例。

Voilà,这就是本系列开篇的全部内容了,希望这个系列能够野蛮生长,生生不息。欢迎各位留言斧正!

你可能感兴趣的:(Java 数据结构及算法系列 0 - 开篇)