【问题标题】:What are algorithms and data structures in layman’s terms?通俗地说,算法和数据结构是什么?
【发布时间】:2010-12-30 07:39:06
【问题描述】:

我目前作为 Web 开发人员使用 PHP 和 Ruby on Rails。我的问题是为什么我需要知道算法和数据结构?我需要先学习 C、C++ 或 Java 吗?了解算法和数据结构有什么实际好处?通俗地说,算法和数据结构是什么? (很遗憾,我还没有上过 CS 课程。)

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

【问题讨论】:

  • 没有数据结构你会写什么样的软件?
  • 可以在不知道它们被称为“数据结构”的情况下使用数据结构。
  • “请提供尽可能多的信息”——参见维基百科。

标签: algorithm data-structures computer-science terminology


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    1. 打开咖啡机
    2. 研磨咖啡豆
    3. 放入过滤器,将咖啡放入过滤器中
    4. 加水
    5. 开始酿造过程
    6. 喝咖啡

    数据结构是我们以有组织的方式存储信息的一种方式。如需更多信息,请查看Wikipedia Article

    【讨论】:

      【解决方案3】:

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

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

      • 您可以使用通用语言与其他程序员交流。
      • 一旦您离开,其他人将能够理解您的代码。

      您还将学习解决常见问题的更好方法。即使不知道解决问题的标准方法,您最终也可能最终解决这些问题,但是您将花费大量时间重新发明轮子,而且您的解决方案不太可能与成千上万专家研究和改进的解决方案一样好年。

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:


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

            【讨论】:

              【解决方案7】:

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

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

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

              在最简单的情况下,算法只是要做的事情的结构化列表 - 它在计算中的用途是它允许人们看到代码背后的意图,并使逻辑(而不是语法)错误更容易发现。

              例如如果上面的第三步说的是乘法而不是加法,那么有人可以指出逻辑中的错误,而无需调试代码。

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

              这个话题太大了,无法详细介绍,但是网上有很多资源。

              【讨论】:

                【解决方案8】:

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

                您可能不需要一种新的编程语言来从数据结构知识中受益,尽管 PHP(和其他高级语言)会让您看不到其中的很多内容,除非您知道在哪里查找。 Java 是我个人最喜欢学习这类东西的语言,但这很主观。

                【讨论】:

                  【解决方案9】:

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

                  如果您正在进行任何重要的编程,最好了解类数据结构和算法及其用途,以避免重新发明轮子。例如,如果你需要把一个数组的东西按顺序排列,你就需要了解各种排序方式,这样你才能为手头的任务选择最合适的一种。如果您选择了错误的方法,您最终可能会得到一个在某些情况下效率极低的程序。

                  我需要先学习 C、C++ 还是 Java?

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

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

                  主要的实际好处是:

                  • 为了避免一直重复造轮子,
                  • 避免方轮问题。

                  【讨论】:

                    猜你喜欢
                    • 2013-11-06
                    • 2012-03-26
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-01-07
                    • 2011-03-02
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多