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

P S*_*ved 13 algorithm data-structures

这个问题是最后一根稻草; 我一直想知道它,

为什么人们会将"算法"和"数据结构"视为可以相互分离的东西?

我看到很多证据表明它们在程序员的脑海中是分开的.

  • 他们要求 "数据结构和算法"书籍
  • 他们将"数据结构"和"算法"称为单独的大学课程
  • 他们"知道算法",但"在数据结构中很弱"(找不到链接,抱歉).
  • 等等

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

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

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


以下是人们将"算法"和"数据结构"分开时的一些链接:

Kon*_*rus 14

它们是不同的.考虑图表或树木更具体.现在,树似乎只是一棵树.但您可以按预订,订购或后序浏览(一种结构的 3种算法).

一个节点可以有多个或只有2个子节点.树可以是平衡的(如AVL)或包含其他信息(如数据库中的B树索引).这是不同的结构.但是你仍然用相同的算法遍历它们.

现在看?

另一点:算法有时是,有时不是独立于数据结构.某些算法在不同结构上具有不同的复杂性(在图中表示路径表示为列表或2D表).

  • 在数学中,证明和定理是不同的东西,但是拥有"证明"课程和单独的"定理"课程并没有多大意义.这个类比不一定适用于算法和数据结构 - 也许每个都可以合理地单独研究,我的学位是数学,而不是compsci.但我不认为你已经确定了类型的差异这一事实解释了为什么它们应该被单独研究或考虑,所以不能真正回答我认为是问题的主旨.它只是解决了"数据结构是算法"的错误陈述. (6认同)

duf*_*ymo 1

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

它是面向对象的编程,将数据和操作放入单个组件中。如果面向对象更早出现的话,也许就会有一种学科。