- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构;主要内容;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)