- 17
- 0
- 约3.76千字
- 约 52页
- 2016-11-23 发布于湖北
- 举报
数据结构;主要内容;1、概念和术语 ;数据对象:
Digit = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
L e t t e r = {A, B, C, ., Z, a, b, ., z}
NaturalNumber = {0, 1, 2, .}
String = {a, b, ., aa, ab, ac, .}
;数据元素之间的关系;数据结构(Data Structure);数据结构包括数据的逻辑结构和数据的物理结构。
数据的逻辑结构:是对数据元素之间逻辑关系(抛开具体的关系含义以及存储方式等)的描述,可以看作是从具体问题抽象出来的数学模型,可以用一个数据元素的集合和定义在此集合上的几个关系来表示。通常可用图形表示,圆圈表示数据元素,箭头表示关系:
数据的物理结构:是指数据结构在计算机中的具体表示和实现,又称存储结构。它所研究的是数据结构在计算机中的实现方法,包括数据结构中元素的表示及元素间关系的表示。;具体来说,数据结构包含三个方面的内容,即数据的逻辑结构,数据的存储结构和对数据所施加的运算(操作)。这三个方面的关系为:
(1)数据的逻辑结构独立于计算机,是数据本身所固有的。与数据元素本身的形式、内容和存储方式无关。
(2)存贮结构是逻辑结构在计算机存贮器中的映像,必须依赖于计算机。
(3)运算是指所施加的一组操作总称。运算的定义直接依赖于逻辑结构,但运算的实现必依赖于存贮结构。;数据结构的分类-逻辑结构分类;;练习;数据的存储结构;;课堂练习;常见的操作(运算、函数);抽象数据类型(ADT: Abstract Data Type);;抽象数据类型的表示;例:一个简单的圆柱体抽象数据类型:
ADT CYLinder {
Data:
float r, h; // 底面半径r 和圆柱高h
Operation:
Initcyld ( r, h ); //初始化圆柱 Basearea ( r ); //计算底面积
Sidearea ( r, h ); //计算侧面积 Volume ( r, h ); //计算体积
} CYLinder;用Java语言描述数据结构;3、算法(algorithm);算法描述;算法与数据结构;算法性能分析与度量;空间复杂度的度量;时间复杂度;程序步(program step);课堂练习;程 序 语 句
(计算数组a的前n个元素的和);程序步数;Static float Rsum(float a[], int n) //计算a[ ]中前n个元素之和
{
if (n 0) // count++;
return Rsum(a, n-1) + a[n-1 ] ; // count++;
return 0; // count++;
}
程序步: TRsum(n) = 2 + TRsum(n-1) = 2 + 2 + TRsum(n-2)
= 4 +TRsum(n-2) . . . = 2n + TRsum(0)
= 2(n+ 1 );
程 序语句;平均执行步数;时间复杂度的渐进表示法;时间复杂度的渐进表示法;【例1.1】 算法时间复杂度分析
一个简单语句的时间复杂度为O(1)。
int count=0;
一个循环的时间复杂度为O(n)。
int n=8, count=0;
for (int i=1; i=n; i++)
count++;
时间复杂度为O(log2 n)的循环语句。
int n=8, count=0;
for (int i=1; i=n; i*=2)
count++;
时间复杂度为O(n2)的二重循环。
int n=8, count=0;
for (int i=1; i=n; i++)
for (int j=1; j=n; j++)
count++;;时间复杂度为O(nlog2n)的二重循环。
int n=8, count=0;
for (int i=1; i=n; i*=2)
for (int j=1; j=n; j++)
count++;
循环次数为 。时间复杂度为O(nlog2n)。
时间复杂度为O(n)的二重循环。
int n=8, count=0;
for (int i=1; i=n;
原创力文档

文档评论(0)