程序设计的实质是数据表示和数据处理。数据表示的核心是数据结构,数据处理的核心是算法。
1.1 数据结构在程序设计中的作用
程序设计的一般过程:
1.2本书讨论的主要内容
计算机能够求解的问题一般可以分为数值问题和非数值问题。数值问题抽象出的数据模型通常是数学方程;非数值问题抽象出的数据模型通常是线性表、树、图等数据结构。例如学籍管理和人机对弈问题。
非数值问题的数据组织和处理,主要内容是:
(1)数据的逻辑结构;
(2)数据的存储结构;
(3)算法;
(4)常用数据结构处理;
1.3数据结构的基本概念
1.3.1数据结构
数据是信息的载体,在计算机科学中是指所有能输入到计算机中并能被计算机程序识别和处理的符号集合。数据可以分为整数,实数等数值数据和文字,声音等非数值数据。
数据元素是数据的基本单位。构成数据元素的不可分割的最小单位称为数据项。例如下面表格中,1985|12|25就为数据项,党员则为数据元素。
学号 姓名 性别 出生日期 政治面貌
0001 陆宇 男 1968|09|01 团员
0002 李明 男 1985|12|25 党员
数据结构是指相互之间存在一定关系的数据元素的集合。按照视点的不同,数据结构分为逻辑结构和存储结构。数据结构的逻辑结构是指数据元素之间逻辑关系的整体。根据数据元素之间逻辑关系的不同,数据结构可以分为集合、线性结构、树结构、图结构四类。
数据的存储结构又叫物理结构,是数据及其逻辑结构在计算机中的表示。顺序结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系有元素的存储位置来表示。链接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。
数据的逻辑结构属于用户视图,是面向问题的,反映了数据元素之间的关联方式或邻接关系。而数据的存储结构是面向计算机的。
1.3.2抽象数据类型
1.数据类型
数据类型是一组值的集合以及定义域这个值集上的一组操作的总称。
2.抽象
所谓抽象,就是抽出问题本质的特征而忽略非本质的细节,是对具体事物的一个概括。
3.抽象数据类型
抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。
1.4算法及其算法分析
1.4.1算法及其描述方法
1.什么是算法
算法是对特定问题求解步骤的一种描述,是指令的有限序列。
算法的5个特性为:
(1)输入:一个算法有零个或多个输入。
(2)输出:一个算法有一个或多个输出。
(3)有穷性;
(4)确定性;
(5)可行性;
2.什么算是好算法
一个好算法要满足:正确性、鲁棒性、简单性、抽象分级、高效性。
3.算法的描述方法
(1)自然语言,其优点是容易理解,缺点是容易出现二义性,且算法通常很冗长。
(2)流程图,其优点是直观易懂,缺点是严密性不如程序设计语言,灵活性不如自然语言。
(3)程序设计语言。
(4)伪代码。
1.4.2算法分析
1.度量算法效率的方法
一种方法是事后统计,先将算法实现,然后输出适当的数据运行,测算其时间和空间开销。但其将花费较多的时间和精力以及结果依赖于计算机的软硬件等环境因素。另一种方法是事前分析,这个方法较常用。
2.算法的时间复杂度
问题规模是指输入量的多少。