Fork me on GitHub

【译】Swift算法俱乐部-为什么要学习算法与数据结构?

本文是对 Swift Algorithm Club 翻译的一篇文章。
Swift Algorithm Clubraywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下,大概有一百左右个的算法和数据结构,基本上常见的都包含了,是iOSer学习算法和数据结构不错的资源。
andyRon/swift-algorithm-club-cn是我对Swift Algorithm Club,边学习边翻译的项目。欢迎有兴趣学习算法和数据结构,有时间的小伙伴一起参与翻译,欢迎issue,或者直接提交pull request。

如果你已经写过一些代码,你也许就会好奇学习算法和数据结构的意义何在,特别是如果你没有接受过计算机科学专业的高等教育。

毕竟,在平时的编码工作中,到底会有多少机会需要自己亲自编写一个链表或排序算法呢?答案是:可能永远都不会。

然而…

了解一点现有算法解决问题时所用的奇技淫巧可能会给予你启发,让你能更好地优化自己的代码。

除了自带的标准数组和字典之外,了解一些其它的数据结构让你在构建自己的 App 时拥有更多的选择。

学习算法和数据结构会助你成为更好的开发者!(当然也就意味了可以赚到更多的$$$)

运用算法能让你编写出其它方式编写不出的软件

过去曾经在编写 App 时遇到过瓶颈,无法继续编写下去,因为我陷入到了一些基础的问题中,无法自拔。

通常的瓶颈都是运行速度的问题,我的 App 不够快。现在回想起来,原因多是我在解决问题是选用了错误的算法。如果我当时知道 O(n)O(n^2) 之间的区别,或许就能克服这些瓶颈了。

对于小规模的数据量简单粗暴的方法往往能很好的完成工作,但事情并不总是如人所愿。对于大数据量,你需要使用更加聪明的算法。

有些时候,我对自己所面对的问题根本就手足无措,甚至写不出来一个运行较慢的正确算法,不知道从何处下手。这时候,如果了解一些算法理论,就会有更多的方法可供尝试。

不要死记硬背算法实现

本文的目的不在死记硬背算法实现。你应该试着去理解不同的算法是如何解决不同的问题的,而不是死记硬背。

学习一些算法技术,例如:分而治之、动态规划、贪婪算法等,可以助你更好地理解算法之间的快慢差异,并学会在算法对时间和空间的使用上做出平衡。

所以本项目的主要目的是教会你如何更好的跟计算机打交道。

放轻松,算法并没有听起来那么可怕

很多算法书开篇就摆上来很多数学理论,数学公式固然有用,但初学并不需要。所以不要被那些公式吓到了。只要写过代码,你就能很好地理解那些神奇的算法和数据结构背后的原理。

相信我,算法是很有趣的。:-)

坚持原创技术分享,您的支持将鼓励我继续创作!