首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么“算法”和“数据结构”被视为单独的学科?

为什么“算法”和“数据结构”被视为单独的学科?
EN

Stack Overflow用户
提问于 2010-03-14 10:38:53
回答 8查看 13.3K关注 0票数 18

问题是最后一根稻草,我很长时间都在想,

为什么人们会把“算法”和“数据结构”当作可以彼此分离的东西呢?

我看到了很多证据表明他们在程序员的头脑中是分开的。

  • 他们请求“数据结构和算法”书籍
  • 他们将“数据结构”和“算法”称为单独的大学课程。
  • 他们“知道算法”,但“数据结构薄弱”(很抱歉,找不到链接)。
  • 等。

在我看来,“数据结构”是一种算法,因为“数据结构”的概念是关于操作进出结构的数据的算法。但这种观点似乎并不是主流观点。我错过了什么?

编辑:不幸的是,我没有很好地表达这个问题。在人们编写的程序中,数据结构和算法的分离是很自然的,因为前者是数据,后者是函数(在像STL这样的半功能框架中,它是整个事情的核心)。

但以上各点,以及问题本身,指的是人们思考的方式,以及他们在头脑中安排知识的方式。这甚至不必与代码编写相关。

这里有一些链接,当“算法”和“数据结构”是相同的时候,人们会将它们分开:

EN

回答 8

Stack Overflow用户

发布于 2010-03-14 10:52:31

算法和数据结构紧密结合在一起。算法依赖于数据结构,如果你改变它们中的任何一个,复杂度就会发生很大的变化。他们是不一样的,但肯定是同一枚硬币的两面。选择一个好的数据结构本身就是一条通向更好算法的途径。

例如优先级队列可以使用二进制堆和二项式堆来实现,二进制堆允许在恒定时间内以最高优先级的元素进行窥视,而二项式堆则需要O(log )时间来窥视。

因此,特定的算法对特定的数据结构(在特定的上下文中)最有效,因此AlgorithmsData structure携手并进!

票数 3
EN

Stack Overflow用户

发布于 2010-03-14 10:46:13

人们称他们为不同的实体,因为他们是。假设我想从一组数据中找到一个元素。如果我把数据放入数组中,数组就是数据结构。一旦它在数组中,我可以使用多个不同的算法来找到我感兴趣的元素。我可以对数组进行排序(使用多种排序),然后使用二进制搜索,只需线性地检查每个元素,等等。选择数组作为数据结构(而不是链接列表)并不是选择算法。

也就是说,重要的是要理解其中一个,理解另一个。如果您不太了解算法,那么不同数据结构的优缺点就不明显了,反之亦然。因此,同时教他们是有意义的。然而,它们是不同的实体。

编辑思考一下:如果您查看大多数算法的伪代码,则没有指定数据结构。您可能有一个需要迭代等元素的“列表”,但该列表的确切实现对算法的正确性并不重要。

票数 2
EN

Stack Overflow用户

发布于 2010-03-14 10:40:39

我想说的是,这是因为函数式编程将操作与操作本身分开。目标和行动当然是不同的,即使它们是紧密交织在一起的。

是面向对象的编程将数据和操作放在一个组件中。也许,如果OO来得早一点,就会有一个纪律。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2441845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档