第2章 基本概念以及算法性能分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4)输入:一个算法有0个或者若干个输入; 5)输出:至少产生一个输出或者执行一个有意思的操作。
27
第1章 基本概念和算法性能分析
2)算法设计的要求
2.1)正确性:算法应确切地满足具体问题的需求。 2.2)可读性:算法主要是为了人的阅读与交流,其次才是机 器的执行。 2.3)健壮性:当输入数据非法时,算法也能适当地作出反应 或进行处理。 2.4)效率与低存储要求:效率一般指执行的时间。 3)算法效率的度量
第1章 基本概念和算法性能分析
1.4 数据结构的表示
(1)图示表示法 图示表示是由顶点和边构成的图,其中顶点表示数据 ,边表示数据之 间的结构关系;
学生基本情况表的图示表示
001 002 003 004 005 006 007 008
家族树的图示表示
A B E F C G H D I J
22
第1章 基本概念和算法性能分析
2) 线性结构 姓名3) 树结构 政治面藐 专业 王洪 4) 图结构 党员 计算机 孙文5)其它复杂结构 计算机 团员
谢军 李辉 沈祥福 余斌 巩力 孔令辉 003 计算机 计算机 计算机 计算机 计算机 计算机 004
团员 团员 学生间学号顺序关系 党员 是一种线性结构关系,结构中的 团员 数据元素之间 团员 存在一个对一个的关系 团员 005 006 007 008
25
解法2

第1章 基本概念和算法性能分析




# define N 100 Void scheme( ) { int i, j; for (i=0; i<=N/3; i++) for (j=0; j<=(N-3*i)/2; j++) { if (3*i+2*j+0.5*(N-i-j)= =N) cout<< i<<j<<N-i-j); } } 时间复杂度为O(N2 )
D
B
用图来解决这个问题
图的顶点表示间的连线表示两通路 之间不能同时通行。
对图上的每个顶点染色,要求线 相连的两个定点不能染相同的颜 色,总的颜色种类要尽量少。 13条可行的通路,需要4种颜色的灯 即可保证最大交通量。
4
第1章 基本概念和算法性能分析
5
第1章 基本概念和算法性能分析
数据元素
0001 0002 0003 0004
3. 数据对象
数据项
是性质相同的数据元素的集合,是数据的一
个子集。例如整数数据对象集合,字符数据对象集 合。 14
第1章 基本概念和算法性能分析
4. 数据结构
是相互之间存在一种或多种特定关系的相同数据元素的 集合。
结构:在任何问题中,数据元素的存在一般都不是孤立 的,它们之间存在着某种联系,这种数据元素相互之间的 关系称为结构 。
第1章 基本概念和算法性能分析
第一章
1.1 1.2
基本概念和算法性能分析
为什么要学习数据结构; 数据结构课程研究的内容;
1.3
1.4
数据结构的分类及表示;
算法及算法分析(算法评价)
1
第1章 基本概念和算法性能分析 1.1 为什么要学习数据结构? 一、什么是数据结构?
1)学籍管理系统
学号 0001 0002 0003 0004 学号 0001 0002 0003 姓名 王兵 李方 王力 张平 外语 89 87 78 班级 200201 200202 200203 200204 数学 98 76 86 政治 76 76 86 数据结 构 96 78 67 职务 班长 …
7
第1章 基本概念和算法性能分析
数据结构的研究问题: 非数值数据之间的结构关系, 及如何表示,如何存储,如何处理。
本课程讨论的问题: 应用中常用的几种数据间的结构关系,
及如何表示,如何存储,如何处理。
8
第1章 基本概念和算法性能分析
二、为什么要学习数据结构 1)数据结构课程的发展 数据结构作为一门独立的课程,在国外是1968开始的。 当大型程序、独立软件出现后,结构程序设计成为程序设计 方法学的主要内容后,人们越来越重视数据结构,认为: 程序设计=数据结构+算法 PASCAL语言的发明者Niklaus Wirth教授
3.1)时间效率的度量 两种方法: 1)事后统计法 28
第1章 基本概念和算法性能分析
2)事前分析估算法 A)依据的算法采用的策略; B)问题的规模,即算法的时间效率与算法处理的数据 元素个数n的关系; C)书写程序的语言; D)编译程序所产生的机器代码的质量;
E)机器执行指令的速度;
我们认定一个算法“运行工作量”的大小,只依赖于 问题的规模,或者说,它是问题规模的函数,通常问题 规模用整数量n表示。 29
学生基本情况登记表的图示
16
第1章 基本概念和算法性能分析

家族的族谱 假设某家族有10个成员A, B, C, D, E, F, G, H,I, J,他们之 间的血缘关系可以用如下图表示。
A B E F C G H D I J
成员之间是一对多的关系 是一种树型结构关系,结构中的 数据元素之间 存在一个对多个的关系
26
第1章 基本概念和算法性能分析





1.2)算法的特性 1)有穷性:计算机的指令执行序列是有限的; 2)确定性:每一条指令的含义明确,无二义性; 3)可执行性:每一条指令都应在有限的时间内完成; 3)可行性:一个算法是能行的,即算法中描述的操作都
是可以通过已经实现的基本运算执行有限次来实现。
20
第1章 基本概念和算法性能分析
9.数据类型 数据类型是高级程序设计语言中已经实现的数据结构。 C++中的基本类型有整形,字符型等,这些数据类型 程序设计人员可以在申明类型后直接使用。 10.抽象数据类型
抽象数据类型是用户在数据类型(已有类型)的基础上自 己定义和实现的数据类型。
遵从先定义,后申明,在使用的原则。 抽象数据类型的描述方法和特点(P20) 21
1.2 本课程研究的内容
计算机的发展
软件 硬件 应用领域
原始数据
程序
结果数据
数据处理的种类和能力
数 (整数,实数) 字符 字符串 文字 数值数据 图形 图象 声音
数据
数据:客观对象的符号表示
非数值数据
数学中的整数、实数, 课程名,地名、书名
6
第1章 基本概念和算法性能分析
结论:描述非数值计算的模型已经不再是数学方程, 而是线性表,树,图这样的数据之间有一定 关系的数据结构。
1)算法 1.1)算法的概念 算法是对特定问题求解步骤的一种描述,它是指 令的有限序列,其中每一条指令表示一个或多个操作;
算法的设计可以避开具体的计算机设计语言,但是算法的 实现必须借助程序设计语言的数据类型以及算法。
24
第1章 基本概念和算法性能分析

解法1
100元买100支笔, 其中钢笔 3元/支, 圆珠笔 2元/支, 铅笔 0.5元/支.
30
第1章 基本概念和算法性能分析
通常采用的方法:从算法中选取一种对于所研究的问题 (或算法类型)来说是基本操作的原操作,以该操作重 复执行的次数来作为算法的时间度量。
0003
0004
78
76
86
67
86
78
67
86
13
第1章 基本概念和算法性能分析
“图” 中的每个定点就是一个数据元素。
有时一个数据元素可由若干个数据项组成,数据项 是数据的不可分割的最小单位。
学号 外语 89 87 78 76 数学 98 76 86 67 政治 76 76 86 78 数据结构 96 78 67 86
第1章 基本概念和算法性能分析
算法的基本构成: 我们先来看两个N阶矩阵相乘的算法。
for (i=1;i<=n;++i) for (j=1;j<=n;++j) { c[i][j]=0; for (k=1;k<=n;++k) c[i][j]=c[i][j]+c[i][k]*c[k][j]; } 控制结构(顺序、分支、循环) 原操作
0004
76
67
78
86
2
第1章 基本概念和算法性能分析

2) 迷宫问题。在迷宫中,每走到一处,接下来可走 的通路有三条。计算机处理的这类对象之间通常不存 在线性关系。若把从迷宫入口处到出口的过程中所有 可能的通路都画出,则可得一棵“树” 入口
出口 3
第1章 基本概念和算法性能分析
3)多岔路口交通灯管理问题 C
根据数据元素之间关系的不同,可以分为以下几类基本 结构: 集合; 线性结构; 树形结构; 图或网状结构。 15
第1章 基本概念和算法性能分析
一 常用的数据结构

某班学生基本情况登记表,记录了每个学生的学号 姓名 专业 1) 集合 政治 面貌 ,表中的记录是按学生的学号顺序排列的。
学号 001 002 003 004 005 006 007 008 001 002
数据结构
直接影响
操作系统 编译原理
数据库原理
总之一句话,数据结构课程非常重要,不是一般重要。 11
第1章 基本概念和算法性能分析
1、教材 [1]数据结构教程(第3版).李春葆.清华大学出版社,2010 2、参考书 [1]数据结构(用面向对象方法与C++描述).殷人昆. 清华大学出版社,2004 [2]数据结构与算法.齐德昱.清华大学出版社,2003 [3]数据结构与问题求解(C++版)(第2版).Mark Allen Weiss(美), 张丽萍.清华大学出版社 ,2005
17
第1章 基本概念和算法性能分析

元素之间是多对多的关系 是一种图状结构关系
18
第1章 基本概念和算法性能分析
5、逻辑结构:结构定义中的“关系”描述的是数据元素之 间 的逻辑关系,所以成为数据的逻辑结构。
001
002
003
004
005
006
007
008
A
B E F C G H D I J
19
第1章 基本概念和算法性能分析
学号姓名专业政治面藐001计算机党员002孙文计算机团员003计算机团员004计算机团员005沈祥福计算机党员006计算机团员007计算机团员008计算机团员学生基本情况登记表的图示001003002004006005008007学生间学号顺序关系是一种线性结构关系结构中的数据元素之间存在一个对一个的关系图结构5其它复杂结构基本概念和算法性能分析17家族的族谱假设某家族有10个成员aj他们之间的血缘关系可以用如下图表示
写算法输出各种组合方案
#define N 100 void scheme() { int i, j, k, count, money; for (i = 0; i<=N; i++ ) for (j = 0; j<=N; j++ ) for (k=0; k<=N; k++) { count=i+j+k; money=3*i+2*j+0.5*k; if ( count==N && money==N) cout<<i<<j<<k ; } 算法的时间复杂度为O (N3) }
12
第1章 基本概念和算法性能分析
1.3 基本概念和相关术语
1. 数据
是对客观事物的符号表示,在计算机科学中是指所有输 入到计算机中并被计算机程序处理的符号的总称。
2. 数据元素
是数据的基本单位,在计算机程序中通常作为一个整体 进行考虑和处理。 数据元素
学号 0001 0002 外语 89 87 数学 98 76 政治 76 76 数据结 构 96 78
(2)二元组表示
二元组表示是用一个二元组(D,S)表示数据结构, 其中 D 是数据元素 集合,S 是 D 上关系的集合。 学生基本情况表的二元组表示(D,S)
001 002 003 004 005 006 007 008
D = { 001,002,003,004,005,006,007,008} S = { R } R= {<001,002>,<002,003>,<003,004>,<004,005>,<005,006>, <006,007>,<007,008> }
6、物理结构:数据元素在计算机中的表示(又称映象) 称为数据的物理结构,又称存储结构。它包括数据元素的 表示和关系的表示。 1)顺序存储结构:借助元素在存储器中的相对位置来表示 数据元素之间的逻辑关系。 2)非顺序存储结构:借助指示元素存储地址的指针表示数 据元素之间的逻辑关系 1,2,3,4,5,6,7,8,9 . . . 4 3 2 0002H 1 0000H 1 0002H 2 3 ……
A
家族树的二元组表示(D,S)
B
C
D
D = { A,B,C,D,E,F,G,H,I,J} E F G H I S = { R } R = {〈A,B>,<A,C>,<A,D>,<B,E>,<B,F>,<C,G>,<D,H>,<D,I>,<D,J> }
J
23
第1章 基本概念和算法性能分析
1.5 算法和算法分析
9
第1章 基本概念和算法性能分析
2)数据结构课程教学任务 数据结构是计算机科学的算法理论基础和软件设计的技术基础, 主要研究信息的逻辑结构及其基本操作在计算机中的表示和实现。
提高算法设计能力。
训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,
10
第1章 基本概念和算法性能分析
3)数据结构的重要性 数据结构——专业基础课程 计算方法
相关文档
最新文档