本文是对 Swift Algorithm Club 翻译的一篇文章。
Swift Algorithm Club是 raywenderlich.com网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下,大概有一百左右个的算法和数据结构,基本上常见的都包含了,是iOSer学习算法和数据结构不错的资源。
andyRon/swift-algorithm-club-cn是我对Swift Algorithm Club,边学习边翻译的项目。欢迎有兴趣学习算法和数据结构,有时间的小伙伴一起参与翻译,欢迎issue,或者直接提交pull request。
如果你已经写过一些代码,你也许就会好奇学习算法和数据结构的意义何在,特别是如果你没有接受过计算机科学专业的高等教育。
毕竟,在平时的编码工作中,到底会有多少机会需要自己亲自编写一个链表或排序算法呢?答案是:可能永远都不会。
然而...
了解一点现有算法解决问题时所用的奇技淫巧可能会给予你启发,让你能更好地优化自己的代码。
除了自带的标准数组和字典之外,了解一些其它的数据结构让你在构建自己的 App 时拥有更多的选择。
学习算法和数据结构会助你成为更好的开发者!(当然也就意味了可以赚到更多的$$$)
运用算法能让你编写出其它方式编写不出的软件
过去曾经在编写 App 时遇到过瓶颈,无法继续编写下去,因为我陷入到了一些基础的问题中,无法自拔。
通常的瓶颈都是运行速度的问题,我的 App 不够快。现在回想起来,原因多是我在解决问题是选用了错误的算法。如果我当时知道 O(n) 和 O(n^2) 之间的区别,或许就能克服这些瓶颈了。
对于小规模的数据量简单粗暴的方法往往能很好的完成工作,但事情并不总是如人所愿。对于大数据量,你需要使用更加聪明的算法。
有些时候,我对自己所面对的问题根本就手足无措,甚至写不出来一个运行较慢的正确算法,不知道从何处下手。这时候,如果了解一些算法理论,就会有更多的方法可供尝试。
不要死记硬背算法实现
本文的目的不在死记硬背算法实现。你应该试着去理解不同的算法是如何解决不同的问题的,而不是死记硬背。
学习一些算法技术,例如:分而治之、动态规划、贪婪算法等,可以助你更好地理解算法之间的快慢差异,并学会在算法对时间和空间的使用上做出平衡。
所以本项目的主要目的是教会你如何更好的跟计算机打交道。
放轻松,算法并没有听起来那么可怕
很多算法书开篇就摆上来很多数学理论,数学公式固然有用,但初学并不需要。所以不要被那些公式吓到了。只要写过代码,你就能很好地理解那些神奇的算法和数据结构背后的原理。
相信我,算法是很有趣的。:-)
网友评论