Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

介绍 数据结构与算法

数据结构 是关于如何以不同的结构存储数据。

算法 是关于如何解决不同的问题,通常是通过搜索和操作数据结构来实现。

有关数据结构和算法 (DSA) 的理论有助于我们使用大量数据来有效地解决问题。

什么是数据结构?

数据结构是一种存储数据的方式。

我们根据所拥有的数据以及要对数据执行的操作,以不同的方式构建数据结构。

Family Tree
家谱

首先,让我们考虑一个没有计算机的例子,只是为了理解这个概念。

如果我们想要存储与我们相关的人员信息,我们可以使用家谱作为数据结构。我们选择家谱作为数据结构,因为我们拥有与我们相关的人员信息以及他们之间的关系,并且我们希望获得概述,以便我们可以轻松地找到特定家庭成员,例如跨越几个世代。

有了这样的家谱数据结构,我们可以直观地看到,例如,我的母亲的母亲是谁——她是“Emma”,对吧?但是,如果没有这个数据结构提供的从子女到父母的链接,就很难确定个人之间的关系。

数据结构使我们能够高效地管理大量数据,用于大型数据库和互联网索引服务等用途。

数据结构是创建快速高效算法的必要成分。它们有助于管理和组织数据,减少复杂性并提高效率。

在计算机科学中,有两种不同类型的数据结构。

基本数据结构 是由编程语言提供的基本数据结构,用于表示单个值,例如整数、浮点数、字符和布尔值。

抽象数据结构 是使用基本数据类型构建的更高级的数据结构,提供了更复杂和专门的操作。一些常见的抽象数据结构示例包括数组、链表、栈、队列、树和图。


什么是算法?

算法是一组逐步指令,用于解决给定问题或实现特定目标。

Pommes Frites Recipe
薯条食谱

写在纸上的烹饪食谱是一个算法的例子,目标是制作特定的晚餐。制作特定晚餐所需的步骤被准确地描述了。

当我们在计算机科学中谈论算法时,逐步指令是用编程语言编写的,并且算法使用数据结构,而不是食物成分。

算法是计算机编程的基础,因为它们提供了执行任务的逐步指令。高效的算法可以帮助我们找到我们正在寻找的解决方案,并将缓慢的程序转变为更快的程序。

通过学习算法,开发人员可以编写更好的程序。

算法示例

  • 在 GPS 导航系统中查找最快的路线
  • 导航飞机或汽车(巡航控制)
  • 查找用户搜索的内容(搜索引擎)
  • 排序,例如按评分对电影进行排序

我们将在本教程中查看的算法旨在解决特定问题,并且通常被设计为在特定数据结构上运行。例如,“冒泡排序”算法旨在对值进行排序,并且被设计为在数组上运行。


数据结构与算法

数据结构和算法 (DSA) 密不可分。数据结构本身并没有什么用,除非您可以使用算法高效地搜索或操作它,而本教程中的算法如果没有数据结构来处理,也就不那么有用。

DSA 是关于找到高效的方式来存储和检索数据、执行数据操作以及解决特定问题。

通过理解 DSA,您可以

  • 决定在给定情况下哪种数据结构或算法最合适。
  • 制作运行速度更快或使用更少内存的程序。
  • 理解如何处理复杂问题并以系统的方式解决问题。

数据结构和算法在哪些地方需要?

数据结构和算法 (DSA) 几乎用于每个软件系统,从操作系统到 Web 应用程序

  • 用于管理大量数据,例如社交网络或搜索引擎。
  • 用于安排任务,以决定计算机应该首先执行哪个任务。
  • 用于规划路线,例如在 GPS 系统中找到从 A 到 B 的最短路径。
  • 用于优化流程,例如安排任务以便它们能够尽快完成。
  • 用于解决复杂问题:从找到装载卡车的最佳方式到让计算机从数据中“学习”。

DSA 几乎是软件世界中各个部分的基础

  • 操作系统
  • 数据库系统
  • Web 应用程序
  • 机器学习
  • 电子游戏
  • 加密系统
  • 数据分析
  • 搜索引擎

理论和术语

在本教程中,我们将需要新的理论概念和术语(新词),以便我们更好地理解我们将要处理的数据结构和算法。

这些新词和概念将在需要时进行介绍和解释,但这里列出了一些关键术语,只是为了概述即将到来的内容

术语 描述
算法 一组逐步指令,用于解决特定问题。
数据结构 一种组织数据的方式,以便可以有效地使用它。常见的数据结构包括数组、链表和二叉树。
时间复杂度 衡量算法运行所需时间的指标,具体取决于算法处理的数据量。
空间复杂度 衡量算法使用内存量的指标,具体取决于算法处理的数据量。
大 O 符号 一种数学符号,用于描述函数在参数趋于特定值或无穷大时的极限行为。在本教程中,它用于描述算法的时间复杂度。
递归 一种编程技术,其中一个函数调用自身。
分治 一种通过将复杂问题分解成更小、更易于管理的子问题、解决子问题并将解决方案组合起来来解决复杂问题的方法。递归通常在算法中使用这种方法时使用。
暴力破解 算法可以通过简单地尝试所有可能的解决方案,然后选择最佳解决方案来工作的一种简单直接的方法。

从哪里开始?

在本教程中,您将首先了解具有匹配算法的数据结构,然后再继续学习下一个数据结构。

在本教程中,概念会变得更加复杂,因此建议从头开始一步一步地学习 DSA。

如前一页所述,在进行本教程之前,您应该至少熟悉一种最常用的编程语言,例如 JavaScriptCPython

在下一页中,我们将了解两种不同的算法,它们仅使用基本数据结构(两个整数变量)打印出前 100 个斐波那契数。一种算法使用循环,另一种算法使用称为递归的方法。

单击“下一页”按钮继续。



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.