沃卡惠移动端logo

沃卡惠  行业资讯

资讯详情

如何开始学习数据结构和算法

2023-01-03 09:29:354636

今天,由于高级语言的进步,您可以在不深入研究这些概念的情况下开始编程生涯。这既是好事也是坏事。

一方面,你可以加快学习编码的速度,减少基本工作的挫败感。大多数著名的数据结构、算法和设计模式都融入了流行的编程语言。另一方面,不知道幕后发生了什么会导致选择错误的解决方案和技术,并编写出不是最佳的代码。
如何开始学习数据结构和算法

对于自学者来说尤其如此,自学者在开发者社区中占了相当大的比例。有一段时间,我一直在寻找一本关于数据结构和算法的入门书籍。

学习基础知识

虽然这个名字听起来有点傻(对于编程,我喜欢非常平淡的名字,比如“机器学习入门”或“高级JavaScript安全性”),有趣的数据结构实际上很有深度。

这本书从计算机体系结构的一些基础知识开始,包括内存结构,变量和数组是如何存储的,数据结构是什么样子的,等等。请注意,JavaScript和Python等高级语言使用自己的动态数据存储范例,您需要查看它们的详细文档(例如,V8引擎中的内存存储)。然而,了解内存存储的基本原理总是很有帮助的。

带你了解所有主要的算法。您将了解流行的搜索算法,如快速排序、树排序和冒泡排序。您还将了解主要数据结构的机制,如链表、双向链表、堆栈、堆、四叉树和八叉树。

即使您不打算手动实现这些算法和数据结构,了解它们也是很重要的。例如,有几种方法可以存储数组和索引列表。这些数据类型的接口在很大程度上是重叠的,在某些情况下它们可以互换使用。但是他们使用的算法是非常不同的,这可能导致不同的性能水平取决于你如何使用它们。每种语言的文档通常会说明哪种算法在每种类型的容器的幕后工作。

这些算法和结构中的一些针对索引访问进行了优化,而另一些则适合顺序访问。有些在规模静态时性能更好,而有些则设计为动态增长。了解这些小细节非常重要,尤其是在处理非常大的数据集时。

因此,了解排序和存储的机制将非常有助于为变量选择最佳的存储方法。(我必须再次指出,不同的语言在数据存储方面有各自的细微差别,但基本思想是相同的。)

有趣的例子

我喜欢的一件事是有趣的数据结构库比卡展示例子的方式。在整本书中,你会看到一些关于咖啡豆的假设例子来解释复杂的软件概念。

Kubica使用类似Python的伪代码来显示例子,有好有坏。一方面,这些例子很容易浏览,尤其是当它们变长的时候。另一方面,您必须自己完成完整的实现。话又说回来,这并不是一件太糟糕的事情,因为它迫使你编写自己的代码并更好地学习。

期间有趣的数据结构不是数据结构和算法的最终指南,顾名思义,它是一个有趣的主题介绍。作为一个多次研究和实现数据结构和算法的人,我发现这本书令人耳目一新,尤其是在一些更高级的主题上,如跳过列表和bloom filters。

Kubica的书可能是一个很好的开端,让你踏上深入探索数据结构和算法的旅程。

Baidu
map