数据结构与算法一:开篇

Posted 北冥鱼_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法一:开篇相关的知识,希望对你有一定的参考价值。

《Data Structures & Algorithms in Swift》 翻译工作正式开始了!

今天是对这本书翻译的第一天,不要着急,接下来会慢慢把这本书翻译完,并发布在这一系列文章。欢迎大家多多关注、支持。

因为花费了大量时间和精力,为了产出更好的服务,后面的部分章节选择性收费,望理解。

想了解更多信息,可以关注一下我的个人技术公众号 – 「北之星」。

为何要学习数据结构与算法?

数据结构研究的是效率。

假如给我们特定数量的数据,存储它或者操作它,以实现特定目标的最佳方式是什么呢?

程序员们要经常使用各种集合类型,比如数组、字典和集合。这些集合就是保存数据的数据结构,每种结构都有各自的特性。

例如,数组(array)与集合(set),两者都是旨在保存元素的集合,但在 array 中搜索元素比在 set 中搜索元素花费的时间要长得多。另外,我们可以对 array 中的元素进行排序,但不能对 set 的元素进行排序。

数据结构是一门经过充分研究的学科,其概念与语言无关。C 中的数据结构在功能和概念上与其它语言(例如 Swift)中的同一数据结构相同。

Swift 作为新兴的、高效的一门高级语言,使用 Swift 实践数据结构与算法,是学习数据结构与算法的一个不错选择。本书选用 Swift 作为开发语言。

算法是完成某种任务的一组操作。它可以是一种排序算法,可以是一种将 8K 图片压缩到更小大小的算法。算法对于软件来说是必不可少的,无数聪明的前辈们已经为我们创建了很多优秀的算法,我们可以根据需要选用。

学习数据结构和算法的好处

面试

大多数公司都会考试算法以此测试你作为工程师的能力。数据结构和算法的坚实基础是许多软件工程职位的“门槛”。

工作

在处理大数据时,选择恰当的数据结构至关重要。

使用正确的算法对软件的性能和可扩展性起着重要作用。好的算法可以使我们的 app 响应速度更快,使电池寿命更长,可以用更少的资源处理更多的并发。

使用正确的数据结构,还可以使我们的代码可读性更强。例如,当我们在代码中看到 Set,马上就可以推断:

Set 的消费者不关心元素的顺序,因为 Set 是一个无序的集合
Set 确保没有重复值,因为我们可以假设消费者正在使用无重复的数据
Set 非常适合检查值成员关系,因此工程师可能是为此目的而使用了 Set
一旦熟悉了各种数据结构,我们就可以使用它从代码中获取额外的信息。这是一项强大的技能,可以帮助我们了解软件的工作原理。

自我提升

了解算法用于解决棘手问题的策略,可以帮助我们对代码进行改进。 Swift 标准库有一小组通用的集合类型,虽然它们并不涵盖所有情况, 然而这些原语(primitives)是构建复杂的抽象的一个很好的起点。

了解比标准 array 和 dictionary 更多的数据结构可以为我们提供更多构建 apps 的工具。

一位智者曾经说过:算法的练习类似于音乐家练习音阶。你的基础越完善,你就越能更好地使用更复杂的软件。
本书目标

接下来注重讲解以下几块儿内容:

介绍(Introduction)
基本数据结构(Elementary data structures)
树(Trees)
排序(Sorting)
图(Graphs)
这本书最好按先后顺序阅读,但如果你想跳着读也可以。

如果你还不熟悉算法和数据结构,在学习的过程中,可能会觉得其中有些知识点具有挑战性,但不用担心,如果你能够坚持到最后,你将很快成为一名 Swift 数据结构和算法大师。

千里之行始于足下,让我们从现在开始吧!

2022.05.28
上海 二联

以上是关于数据结构与算法一:开篇的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法一:开篇

算法与数据结构开篇——基础与心得

数据结构与算法-开篇

再也不怕数据结构和算法之开篇

跨越算法开篇

2-算法的时间复杂度与空间负责度