外行人的术语中的算法和数据结构是什么?

时间:2009-12-27 19:06:01

标签: algorithm data-structures computer-science terminology

我目前正在使用PHP和Ruby on Rails作为Web开发人员。我的问题是为什么我需要知道算法和数据结构?我是否需要先学习C,C ++或Java?了解算法和数据结构有哪些实际好处?外行人的术语中的算法和数据结构是什么? (你可以告诉我,我还没有完成CS课程。)

请提供尽可能多的信息,并提前感谢您; - )

9 个答案:

答案 0 :(得分:8)

数据结构是存储东西的方式,就像你可以将东西放在堆栈,队列,堆和桶中一样 - 你可以用数据做同样的事情。

算法是食谱或说明,咖啡机的快速入门手册是制作咖啡的算法。

答案 1 :(得分:1)

算法是指令列表,数据结构是表示信息的方式。如果您正在编写计算机程序,那么即使您不知道单词的含义,您也已经在使用算法和数据结构。

我认为了解标准算法和数据结构的最大优势是:

  • 您可以使用通用语言与其他程序员进行通信。
  • 一旦你离开,其他人就能理解你的代码。

您还将学习解决常见问题的更好方法。即使不知道标准的方法,你最终也可能最终解决这些问题,但你会花很多时间重新发明轮子,你的解决方案不太可能像成千上万的专家一样努力和改进岁月。

答案 2 :(得分:1)

alt text
(来源:mit.edu
 这本书是bible on algorithms。通常,数据结构涉及如何组织数据以在内存中访问它,算法是解决问题的方法/小程序(例如:排序列表)。
您应该关心的原因是首先要了解代码中可能出现的问题;与“经过验证的”算法相比,实施得不好的算法可以表现得非常糟糕。了解经典算法以及对它们的期望性能有助于了解代码的优异程度,以及是否可以/应该改进它。
然后就没有必要重新发明轮子,并重写一个众所周知的结构或算法的错误或次优实现。

答案 3 :(得分:1)

算法很简单,就是你做某事的步骤。例如,Coffee Maker算法会运行类似

的算法
  1. 开启咖啡机
  2. Grind Coffee Beans
  3. 放入过滤器并将咖啡放入过滤器
  4. 加水
  5. 开始酿造过程
  6. 喝咖啡
  7. 数据结构是我们以有组织的方式存储信息的手段。有关详细信息,请查看Wikipedia Article

答案 4 :(得分:1)

算法是一系列明确定义的步骤,可以解决一类问题。

数据结构是一种存储和组织数据的方式,以方便访问和修改。

了解标准算法和数据结构的好处是它们大多比你自己开发的好。它们是由比大多数程序员更聪明的人工作数月甚至数年的结果。了解一系列数据结构和算法后,您可以将问题粗略地拟合到数据结构或/和算法中,并根据需要进行调整。

答案 5 :(得分:1)

在经典的“烹饪/烘焙等效物”中,算法是食谱,数据结构是您的量杯,烤盘,曲奇饼干,搅拌碗以及您将使用的任何其他工具(您的炊具是您的编辑器/但是,口译员。

答案 6 :(得分:0)

算法是计算中涉及的过程的表示。

如果你想添加两个数字,那么算法可能会出现:

获得第一个号码; 获得第二个号码; 将第一个数字加到第二个数字; 返回结果。

最简单的说,算法只是一个结构化的事物列表 - 它在计算中的用途是它允许人们看到代码背后的意图,并使得更容易发现逻辑(而不是语法)错误。 / p>

e.g。如果上面的第三步表示乘法而不是添加那么有人就能指出逻辑中的错误,而不必调试代码。

数据结构表示应如何引用系统的数据。它可能与表结构完全匹配,或者可能会被非规范化以使数据访问更容易。最简单的是它应该显示系统中的实体是如何相关的。

这个主题太详细了,但网上有很多资源。

答案 7 :(得分:0)

数据结构至关重要,第二,您的软件拥有的用户数量超过少数。算法是一个广泛的主题,如果对数据结构的良好了解不能解决您的性能问题,您将需要研究它。

您可能不需要新的编程语言来从数据结构知识中受益,尽管PHP(以及其他高级语言)会让您看不到它,除非您知道在哪里查看。对于像这样的东西,Java是我个人最喜欢的学习语言,但这是非常主观的。

答案 8 :(得分:0)

  

我的问题是为什么我需要知道算法和数据结构?

如果您正在进行任何非平凡的编程,那么理解类数据结构和算法及其用途是一个好主意,以避免重新发明轮子。例如,如果您需要按顺序放置一系列事物,则需要了解各种排序方法,以便您可以为手头的任务选择最合适的方法。如果你选择了错误的方法,你可能会在某些情况下得到一个效率极低的程序。

  

我是否需要先学习C,C ++或Java?

您需要知道如何使用某种语言进行编程才能理解算法和数据结构的作用。

  

了解算法和数据结构有哪些实际好处?

主要的实际好处是:

  • 以避免一直重新发明轮子,
  • 避免方轮问题。