408计算机考研系列:数据结构与算法导论篇初探

发表时间: 2024-05-09 19:35

引言

越来越多的高校纷纷宣布,计算机考研专业课采用计算机408统考。无论是计算机专业还是跨考计算机专业,研友们发现计算机考研越来越难!为什么会这样?这得从计算机408统考科目说起,统考科目包括了数据结构与算法计算机操作系统、计算机网络及计算机组成原理。表面上看起来只有四门功课,但是,想要学好它们不容易。还有一些前置的课程需要学习,例如,C语言,编程语言不会,写得出代码吗?!因此,为了帮助诸位研友,从本期内容开始,我们将分多期、系列文章向大家全面详细讲述408统考专业课。

为什么要学习数据结构与算法

图灵奖得主,计算机科学家N.Wirth(沃斯)曾经说过:程序 = 数据结构 + 算法。学习数据结构和算法不单纯只是记住一些常用的数据结构和算法,更重要的是培养问题解决能力、为深入学习其他领域打下基础、增强竞争力以及拓宽视野和思路。学习数据结构与算法的主要意义:

  • 提升编程能力:数据结构与算法是编程的核心。通过学习不同的数据结构和算法,程序员能够更深入地理解计算机如何存储和处理数据,以及如何有效地编写代码来解决问题。
  • 优化程序性能:选择适当的数据结构和算法可以显著提高程序的运行效率。例如,对于需要大量查找操作的数据集,使用哈希表而非数组可以大大提高查找速度。同样,使用高效的排序算法可以显著减少排序所需的时间。
  • 培养问题解决能力:学习数据结构与算法有助于培养逻辑思维和问题解决能力。通过分析和解决各种算法问题,程序员可以学会将复杂问题分解为更小的、可管理的部分,从而找到有效的解决方案。
  • 为深入学习其他领域打下基础:数据结构与算法是计算机科学领域其他分支的基础。无论是操作系统、数据库管理、网络编程还是人工智能,都需要对数据结构和算法有深入的理解。
  • 增强竞争力:在求职市场上,掌握数据结构与算法的知识往往被视为一种竞争优势。许多公司在招聘程序员时都会考察这方面的知识,因为它们是衡量程序员技能水平的重要指标。
  • 拓宽视野和思路:学习数据结构与算法可以接触到各种经典的计算机科学问题,从而拓宽视野和思路。通过了解前人是如何解决这些问题的,可以激发创新思维,为未来的工作和学习提供灵感。

数据结构基本概念

数据

数据是一个广泛使用的术语,通常指的是代表信息的数字、文字、图像、声音或其他符号的集合。

数据类型包括:

  • 结构化数据:存储在数据库或表格中,有预定义的数据模式,如关系型数据库中的数据。
  • 非结构化数据:没有预定义的数据模式,如文本文件、图像、视频和音频等。
  • 半结构化数据:介于结构化与非结构化之间,如XML或JSON格式的数据。

数据元素

数据元素(Data Element)是数据的基本单位。在计算机程序中,数据元素通常作为一个整体进行考虑和处理。数据元素也被称为结点或记录,具有独立含义,并且是构成数据的最小单位。

数据元素可以由若干个数据项组成。数据项是具有独立含义的最小标识单位,是数据元的一个具体值,也是数据记录中最基本的、不可分的有名数据单位。例如,一本书的书目信息可以视为一个数据元素,而书目信息的每一项(如书名、作者名等)则是数据项。

数据元素是用一组属性来描述其定义、标识、表示和允许值的。这些属性包括标识类属性(用于数据元标识)和定义类属性(描述数据元语义方面)。因此,数据元素不仅包含了信息的基本单位,还是进行信息处理和存储的基础。

在计算机中,数据元素通常以二进制形式存在,并可以是数字、字符、图像等各种形式。每个数据元素都有一个唯一的标识符,用以区分其他数据元素。通过组合具有相关性的数据元素,并按照一定的次序进行组织,可以构建出数据模型,用于描述复杂的数据结构和关系。

数据结构

数据结构是计算机存储、组织数据的方式,它指的是相互之间存在一种或多种特定关系的数据元素的集合。这种“结构”指的是数据元素之间存在的关系,主要分为逻辑结构和存储结构。其中,逻辑结构是从逻辑关系上描述数据的,它与数据的存储无关,是独立于计算机的。存储结构则是数据结构在计算机中的表示(又称映像),也称物理结构。它包括数据元素的表示和关系的表示。

数据结构不仅关注数据元素本身,还关注数据元素之间的关系,以及针对这些数据元素和关系所定义的运算和操作,包括:

  • 数据元素与关系:数据结构是由相互之间存在一种或多种特定关系的数据元素组成的集合。这些关系可以是线性的、树形的、图形的或其他更复杂的形式。数据元素之间的关系决定了数据的组织方式和访问特性。
  • 逻辑结构:逻辑结构关注的是数据元素之间的逻辑关系,而不是它们在计算机中的物理存储方式。逻辑结构通常可以分为线性结构(如数组、链表、栈、队列)、树形结构(如二叉树、多叉树)、图形结构(如网络、图)等。
  • 物理结构(存储结构):物理结构或存储结构关注数据元素在计算机中的实际存储方式。它描述了数据元素在计算机内存中的表示以及它们之间关系的实现。存储结构可以分为顺序存储(如数组)和链式存储(如链表)两大类。
  • 运算和操作:数据结构通常定义了一组与数据元素和关系相关的运算和操作。这些运算和操作可以是基本的访问操作(如查找、插入、删除),也可以是更复杂的算法实现(如排序、搜索等)。这些运算和操作是实现特定功能的关键,也是评价数据结构性能的重要指标。
  • 抽象数据类型:数据结构通常被视为抽象数据类型(ADT)的实现,它提供了数据的表示和一组相关的操作。通过抽象数据类型,程序员可以隐藏数据的具体实现细节,只暴露必要的操作接口,从而提高了代码的模块化和可维护性。

常用的数据结构如下图所示: