第1章 数据结构概述
对于一个有志于从事IT专业技术的人士来说,数据结构(Data Structure)是一门与计算机软件和硬件都密切相关的学科,其中包含了算法(Algorithm)、数据存储结构、排序、搜索、哈希函数与程序设计等概念。
1.1 数据结构简介
数据结构可以看成是在数据处理过程中用于分析、组织数据的方法和操作逻辑,它主要关注数据间的特性与相互关系。
在现代社会中,计算机与信息紧密相关,由于计算机具有处理速度快与存储容量大的两大特点(如图1.1所示),因此在数据处理的过程中具有举足轻重的作用。
数据结构是用计算机进行数据处理的一套完整逻辑。程序设计者必须选择一种数据结构来进行数据的增加、修改、删除、保存等操作,如果在选择数据结构时作了错误的决定,程序的执行速度可能变得非常低,如果选错了数据类型,后果更是不堪设想。
因此当用计算机解决问题时,必须以计算机所能接受的模式来认识问题,并设计适当的算法去处理数据,这是数据结构讨论的**。简单地说,数据结构就是对数据与算法结构的研究。
1.1.1 数据与信息
谈到数据结构,首先必须了解什么是数据(Data)与信息(Information)。从字义上来看,数据是指未经加工过的文字(Word)、数字(Number)、符号(Symbol)或图形(Graph)等,它表达的是没有什么利用价值的基本元素或对象,例如姓名、课程表、通信录等都可泛泛地称为“数据”(Data)。
当数据经过处理(Process),例如以特定的方式进行系统地整理、归纳甚至统计分析后就成为信息(Information)。而这样处理的过程就称为“数据处理”(Data Processing)。
从严谨的角度来形容“数据处理”就是用人力或机器设备对数据进行系统的整理,如记录、排序、合并、整合、计算、统计等,以使原始的数据符合需求而成为有用的信息。数据处理过程如图1.2所示。
有的读者可能会有疑问:“数据和信息的角色是否**一成不变呢?”这也不一定,同一份文件可能在某种状况下为数据,而在另一种状况下则为信息。例如美伊战争的某战役死伤人数报告,对你我这样的平民百姓而言,可能只是一份“数据”,不过对于英美联军的指挥官而言可就是弥足珍贵的“信息”。
1.1.2 算法
数据结构与算法是程序设计的核心。程序能否快速而有效地完成预定的任务取决于数据结构,而程序是否能清楚而正确地把问题解决则取决于算法,所以可以这么认为:“数据结构+算法=可执行的程序”,如图1.3所示。
在韦氏辞典中算法被定义为:“在有限步骤内解决数学问题的程序。”如果用在计算机领域中,也可以把算法定义成:“为了解决某一个工作或问题所需要有限数目的机械性或重复性指令与计算步骤”。
在日常生活中有许多工作都可以利用算法来描述,例如员工的工作报告、宠物的饲养过程、学生的功课表等。
当了解了算法的定义后,需要说明计算机算法所必须符合的5个特性,如图1.4所示。以上5个特性的说明如表1.1所示。
接下来要考虑的是如何描述一个算法。其实算法描述的主要目的是让人们了解算法的流程与步骤,只要能清楚地表现算法的5项特性即可。常用的算法描述如下。
1.一般文字
一般文字采用中文、英文、数字等进行描述。文字叙述法的特色在于使用文字或语言叙述来说明演算步骤。图1.5就是一名学生小华早上上学并买早餐的简单文字算法。
……