1.1 1.2
一、. 程序设计的实质是数据表示和数据处理。
1.3 数据结构的基本概念
1.3.1
1.数据:信息的载体.。一指整数,实数等数值数据;二指文字,声音,图形和图像等非数值数据。
2.数据元素:数据的基本单位。
3.数据项:构成数据元素的不可分割的最小单元。
4.数据、数据元素、数据项之间的关系
①包含关系:数据由数据元素组成,数据元素由数据项组成。
②数据元素是讨论数据结构时涉及的最小数据单位,其中的数据项一般不予考虑。
例如:
1.数据结构 :指相互之间存在一定关系的数据元素的集合。
2 .逻辑结构:指数据元素之间逻辑关系的整体。
⑴ 集合:数据元素之间就是 “属于同一个集合” ;
⑵ 线性结构:数据元素之间存在着一对一的线性关系;
⑶ 树结构:数据元素之间存在着一对多的层次关系;
⑷ 图结构:数据元素之间存在着多对多的任意关系。
依次为:
(1). 顺序存储结构:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位 置来表示。
(2). 链接存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示 。
(1) (2)
5.逻辑结构和存储结构之间的关系
(1).数据的逻辑结构属于用户视图,是面向问题的,反映了数据内部的构成方式;数据的存储结构属于 具体实现的视图,是面向计算机的。
(2).一种数据的逻辑结构可以用多种存储结构来存储,而采用不同的存储结构,其数据处理的效率往往 是不同的。
1.3.2 抽象数据类型
1.4 算法及算法分析
1.算法(Algorithm):是对特定问题求解步骤的一种描述,是指令的有限序列。
2. 算法的五大特性:
⑴ 输入:一个算法有零个或多个输入。
⑵ 输出:一个算法有一个或多个输出。
⑸ 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
3.例:欧几里德算法——辗转相除法求两个自然数 m 和 n 的最大公约数
(1)自然语言:优点:容易理解 缺点:冗长、二义性
步骤1:将m除以n得到余数r;
步骤2:若r等于0,则n为最大公约数,算法结束;否则执行步骤3;
步骤3:将n的值放在m中,将r的值放在n中,重新执行步骤1;
(2)流程图:优点:流程直观 缺点:缺少严密性、灵活性
(3)程序设计语言:优点:能由计算机执行 缺点:抽象性差,对语言要求高
(5)伪代码:介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语 法,操作指令可以结合自然语言来设计。
优点:表达能力强,抽象性强,容易理解
1. r = m % n;
2. 循环直到 r 等于0
2.1 m = n;
2.2 n = r;
2.3 r = m % n;
3. 输出 n ;
1.4.2算法分析:
1. 度量算法效率的方法:
a.事后统计:将算法实现,测算其时间和空间开销。
缺点:⑴ 编写程序实现算法将花费较多的时间和精力;
⑵ 所得实验结果依赖于计算机的软硬件等环境因素。
b.事前分析:对算法所消耗资源的一种估算方法。
2.算法的时间复杂度:算法的执行时间=每条语句执行时间之和,大O表示。Ο(1)<(log2n)<(n)<(nlog2n)<(n2)<(n3)<…<(2n)<(n!)
3.算法的空间复杂度:s(n)=O(f(n))
4.算法分析举例:
(1)例1-5 ++x; 时间复杂度O(1)
( 2)例1-6 for (i=1; i<=n; ++i)
++x; 时间复杂度O(n)
( 3)例1-7 for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j)
++x; 时间复杂度O(n^2)
( 4)例1-8 for (i=1; i<=n; ++i)
for (j=1; j<=i-1; ++j)
++x; 时间复杂度O(n^3)
5.最好情况、最坏情况、平均情况
结论:如果问题规模相同,时间代价与输入数据有关,则需要分析最好情 况、最坏情况、平均情况。
最好情况:出现概率较大时分析
最差情况:实时系统
平均情况:已知输入数据是如何分布的, 通常假设等概率分布.