- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数 据 结 构 - search read.pudn.com.ppt
数 据 结 构;第一章 绪 论;第一章 绪 论;关键问题:利用计算机进行信息表示和处理的涉及:
信息的表示
信息的处理
而信息的表示和组织又直接关系到处理信息的程序的效率。随着计算机的普及,信息量的增加,信息范围的拓宽,使许多系统程序和应用程序的规模很大,结构又相当复杂。因此,为了编写出一个“好”的程序,必须分析待处理的对象的特征及各对象之间存在的关系,这就是数据结构这门课所要研究的问题。;1.1 什么是数据结构
众所周知,计算机的程序是对信息进行处理。在大多数情况下,这些信息并不是没有组织的,信息(数据)之间往往具有重要的结构关系,这就是数据结构的内容。什么是数据结构呢?
例子:
例1、电话号码查询系统
设有一个电话号码薄,它记录了N个人的名字和其相应的电话号码,假定按如下形式安排:
()…(an,bn a1,b1)(a2,b2)
其中(ai,bi)(i=1,2…n) 分别表示某人的名字和对应的电话号码。要求设计一个算法,当给定任何一个人的名字时,该算法能够打印出此人的电话号码,如果该电话簿中根本就没有这个人,则该算法也能够报告没有这个人的信息。;数据结构含义:
就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。; 所有能被输入到计算机中,且能被计算机处理的符号的集合。;是数据(集合)中的一个“个体”;数据结构主要指逻辑结构和物理结构
数据之间的相互关系称为逻辑结构。通常分为四类基本结构:
一、集合 结构中的数据元素除了同属于一种类型外,别无其它关系。
二、线性结构 结构中的数据元素之间存在一对一的关系。
三、树型结构 结构中的数据元素之间存在一对多的关系。
四、图状结构或网状结构 结构中的数据元素之间存在多对多的关系。; 一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。
数据对象(Data Object):是性质相同的数据元素的集合。是数据的一个子集。
数据结构(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。;
数据在计算机中的表示称为数据的物理结构,又称为存储结构。
;数据类型:在一种程序设计语言中,变量所具有的数据种类。
例1、 在FORTRAN语言中,变量的数据类型有整型、实型、和复数型
例2、在C++语言中
数据类型:基本类型和构造类型
基本类型:整型、浮点型、字符型
构造类型:数组、结构、联合、指针、枚举型、自定义
数据对象:某种数据类型元素的集合。
例3、整数的数据对象是{…-3,-2,-1,0,1,2,3,…}
英文字符类型的数据对象是{A,B,C,D,E,F,…};1.3 算法和算法分析
1.3.1 算法:
是对特定问题求解步骤的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。
算法具有以下五个特性:
(1)有穷性 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
(2)确定性 算法中每一条指令必须有确切的含义。不存在二义性。
(3)可行性 一个算法是可行的。即算法描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
(4)输入 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。
(5)输出 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。;1.3.2 算法设计的要求;1.正确性; c.程序对于精心选择的、典型、苛刻且带有刁难性的几组输入数据能够得出满足要求的结果;;2. 可读性;3.健壮性;4.高效率与低存储量需求;1.3.3 算法效率的度量;和算法执行时间相关的因素:; 一个特定算法的“运行工作量”
的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。; 假如,随着问题规模 n 的增长,算法执行时间的增长率和 f(n) 的增长率相同,则可记作:;如何估算
算法的时间复杂度?;算法 = 控制结构 + 原操作
(固有数据类型的操作); 从算法中选取一种对于所研究的问题来说是 基本操作 的原操作,以该基本操作 在算法中重复执行的次数 作为算法运行时间的衡量准则。;void mult(int a[], int b[], int c[] ) {
for (i=1; i=n; ++i)
for (j=1; j=n; ++j) {
c[i][j] = 0;
for (k=1; k=n;
文档评论(0)