- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1章讲 绪论--jy.ppt
数据结构与算法Data Structures and Algorithms;教材和参考书
教材:
严蔚敏等,《数据结构 (C语言版)》(第2版),
人民邮电出版社
参考书:
1. 王晓东,《计算机算法设计与分析》(第4版),
电子工业出版社
2. Thomas H. Cormen, 算法导论 (第三版),
The MIT Press, 2013.
3. 严蔚敏等,《数据结构C语言版》,清华大学出版社
4. 唐策善等,《数据结构—用C语言描述》,
高等教育出版社
;平时成绩 : 40%
作业
发言
出勤
小测验(期中考试)
实验(20分)
期末成绩 : 60% (闭卷笔试)
;第1章 绪 论; * ; 电子计算机的主要用途:
? 早期:
主要用于数值计算。
?后来:
处理逐渐扩大到非数值计算领域,能处理多种复杂的具有一定结构关系的数据。; 书目自动检索系统;人 机 对 奕 问 题 ; 公路网管理问题;求解非数值计算的问题:
设计出合适的数据结构及相应的算法。
即:首先要考虑对相关的各种信息如何表示、组织和存储?
数据结构的研究内容为:
研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作。
;
;;; 1、数据(data)
所有能输入到计算机中去的描述客观事物的符号。
数值性数据
非数值性数据(多媒体信息);2. 数据元素(data element)
数据的基本单位, 也称结点(node)或记录(record)。
3、数据项(data item)
有独立含义的数据最小单位也称域(field)。
;整数数据对象
N = { 0, ?1, ?2, … }
学生数据对象
学生记录的集合
;5 、数据结构(Data Structure)
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。;数据结构的两个层次:
逻辑结构
数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。
存储结构(物理结构)
数据元素及其关系在计算机存储器中的存储方式。; 划分方法一
(1)线性结构
有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个后继。
例如:线性表、栈、队列、串。
(2)非线性结构
一个结点可能有多个直接前趋和直接后继。
例如:树、图。
;;存储结构分为:
顺序存储结构
借助元素在存储器中的相对位置来表示数据元素间的逻辑关系。
链式存储结构
借助指示元素存储地址的指针表示数据元素间的逻辑关系。
;元素n;1536;逻辑结构和存储结构都相同, 但运算不同, 则数据结构不同。 例如, 栈与队列。
对于一种数据结构, 常见的运算:
插入
删除
修改
查找
排序;;定义:在一种程序设计语言中,变量所具有的数据种类。 ;抽象数据类型 (ADTs: Abstract Data Types);抽象数据类型可以用以下的三元组来表示:
ADT = (D,S,P)
数据对象 D上的关系集 D上的操作集 ;抽象数据类型;1.3.1 算法的定义及特性
算法定义:一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算序列。;
自然语言
流程图
程序设计语言
伪码;1.3.2 评价算法优劣的基本标准;通常有两种衡量算法效率的方法:;和算法执行时间相关的因素:;算法的执行时间 =
该算法中所有语句的频度之和。;例一
两个矩阵相乘;算法的时间复杂度T(n)是问题规模n的函数。
问题的规模:
算法求解问题的输入量,一般用n表示。
问题的规模对不同问题的含义不同,如:
在n*n矩阵乘法运算问题中,问题规模为n。
在具有n个元素的线性表的排序问题中,
问题规模为n。;算法的渐进时间复杂度
n*n矩阵乘法运算算法:
T(n)=2n3+3 n2+2n+1
即,当n充分大时,T(n)与n3同阶。
此时可记作,T(n)=O(n3) ,用O表示数量级!
算法的渐进时间复杂度:
当问题的规模n趋向无穷大时,T(n)的数量级称为算法的渐进时间复杂度, 记作T(n)=O(f(n))。
其中的f(n)一般是算法的最大语句频度。;for( i = 0; i n; i++)
for( j = 0; j n; j++)
c[i][j] = a[i][j] + b[i][j];
最大语句频度: n*n
时间复杂度: T(n) = O ( n2)
文档评论(0)