上海交大数据结构课程的教案1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10 20 30 40
插入 45
50
输入未处理的数据
何种数据结构
何种算法
输出加工过的数据
3
78900
INTRO
4 物料管理
Algorithms and DataStructures:INTRO
2、什么是数据结构
1、数据类型和数据结构 ·数据值:atomic data value: 不可再分解。如3、2、5等。 nonatomic data value: 可以再分解,其成分称为data element 或 element。如 set: { 32.99, -1.03, 0,23} 。 ·类型:同一类别可供识别的一组个体。 ·数据类型:data value + operation 或者如下定义 1、A set of value 2、A set of operations on the these value。 ·数据类型的类别: 1、原子数据类型: 数据值是原子数据值。如:int 2、结构数据类型: 数据值是可以再分解。如:
7
INTRO
8 物料管理
Algorithms and DataStructures:INTRO
4、算法和算法分析
1、算法:一个算法就是有穷规则的集合,其中的规则规定了一个解决某一个特定问题的运算 序列。 欧几里德算法:如果 a、b 都是正整数,且 a >b 。 则 a = bq + r , 0 < r < b, 此处 r,q 都是 正整数。那么,(a,b) = ( b, r) ; 符号 (a,b ) 为 a、b之间的最大公约数。即:设 m、n 都是正整数,且 m > n; 那么 m、n 之间的最大公约数可以计算如下: n g(m,n) = g(n, mod(m,n)) 程序框图: Input m, n R = mod(m, n) R==0? m <- n; n <- R 输入 求余数 output n 求出 m、n 的最大公约数 if mod(m,n) != 0 if mod(m,n) = 0
更新被除数、除数
8
INTRO
9 物料管理
Algorithms and DataStructures:INTRO
4、算法和算法分析
1、算法:一个算法就是有穷规则的集合,其中的规则规定了一个解决某一个特定问题的运算 序列。 程序框图: Input m, n R = mod(m, n) R==0? m <- n; n <- R 输入 求余数 output n 求出 m、n 的最大公约数
valuea [1] [2] [3] 0.0 1.9 3.4
valueb [1] [2] [3] 3.4 1.9 0.0
5
INTபைடு நூலகம்O
数据值的进一步分解为数据元素,它们之间有一个关系。
6 物料管理
Algorithms and DataStructures:INTRO
2、什么是数据结构
1、数据类型和数据结构 ·数据类型的类别: 1、原子数据类型: 数据值是原子数据值。如:int 2、结构数据类型: 数据值是可以再分解。如:sample array[1..3 ] of real value1 [1] [2] [3] 0 1.9 3.4 value2 [1] [2] [3] 5.3 2.2 4.2 value3 [1] [2] [3] 2.1 0.1 6.3
11
INTRO
12 物料管理
Algorithms and DataStructures:INTRO
4、算法和算法分析
3、大 O 表示法: ·定义;如果存在着正的常数 c 和自然数 n0,当 n >= n0 时;有 f (n) <= Cg(n) 成立,则 称 f( n ) = O(g( n )) 。 在算法分析中, 如果一个的算法的时间复杂性是O(g( n )),读作 g( n ) “ 级 ” 的 或 “ 阶 ” 的。 如: 线性阶的、平方阶的、立方阶的 …… ·例1、 设 T(n) = (n+1)2 = n2+2n2 +1 <= n2 + 2n2 + n2; 在 n=1 时,等式成立,n>1 时,< 式成立 选 n0 = 1, c=4 ; T(n) <= 4n2。所以,T(n) = O(n2) ·例2、 设 T(n) = 3n3+2n2 选 n0 = 0, c=5 ; T(n) <= 5n3。所以,T(n) = O(n3) 同理:选 n0 = 0, c=5 ; T(n) <= 5n4。所以,T(n) = O(n4)??? 注意:符合定义,但在算法分析中是没有意义的。 在算法分析中,通常所说的找到了时间复杂性的级别,是指找到了同样级别的最 简单的函数。 如:307 n2、 n2/2、 n2 都是同一级别的函数,最简单的函数是n2 。所以, 307 n2、 n2/2、 n2 的级别都是O(n2 ) 。 f、g同级别:满足: f=O(g) 且 g=O(f),
1 物料管理
Algorithms and DataStructures:INTRO
目录
第一章 绪
1、重要性
论
2、什么是数据结构 3、课程说明 ##4、算法和算法分析
1
INTRO
2 物料管理
Algorithms and DataStructures:INTRO
1、重要性
1、历史沿革 • 1968年 D·E·Knuth 发表:“ Art of computer programming” IEEE 68 教程 • 1983 IEEE 83 教程 • 1991 IEEE 91 教程 • 2000 IEEE 2000 教程 国内在 78 年 开设、相应地有 93 教程等。 2、计算机科技的两大支柱 · 1、数据结构 2、算法
1、数据类型和数据结构 ·数据结构: 是一种数据类型,它的数据值为: 1、可以进一步分解为数据元素的集合,该数据元素可以是原子数据值,也可以是 另外一种数据结构。 2、数据元素之间有一个关系的集合。 注意:在许多数据结构的书籍之中,通常将数据元素称之为结点,但本书例外。 ·数据结构的分类: 1、线性结构:即:线性表:空或一个元素或:除第一个结点外,都有直接后继结点, 除最后一个结点外,都有直接前驱结点。如: 2、非线性结构:树、二叉树、图等。 2、实现: 1.ADT(Abstract Data Type): 认为 DT 仅存在于想象之中。注意力集中在感兴趣的性质 上,不关心数据的表示形式,操作的具体代码等等。给出规范或说明。 2.VDT(Virtual Data Type): DT 存在于 Virtual processor 上。如: c++ = O.S + hardware + c++ compiler 的 Virtual processor。其他如 SQL Virtual processor 等 。给出表示和实现。如:用类、类属数据类型、模板等。 3.PDT(Physical Data Type):DT 存在于物理机器上。
0 36 i=0
1 24
2 10
3 6 k=3
4 52
5 12
10
INTRO
11 物料管理
Algorithms and DataStructures:INTRO
4、算法和算法分析
2、算法的时间复杂性和空间复杂性: ·问题的规模(n):或大小。如:矩阵的阶数、图的结点个数、被分类序列的正整数个数 …… ·时间复杂性:算法的所需的时间和问题规模的函数。记为 T(n)。当 n-> ∞ 时的时间复杂 性,被称之为渐进时间复杂性。 ·空间复杂性:算法的所需的空间和问题规模的函数。记为 T(n)。当 n-> ∞ 时的时间复杂 性,被称之为渐进空间复杂性。 ·程序运行时间:1、 输入规模 2、利用编译程序生成的目标代码的质量 3、计算机程序指令系统的品质和速度 4、算法的时间复杂性的函数 1、4 点自明。2、3两点表示算法的时间依赖于软件和硬件的环境。或者说用在某一系统 中的绝对时间,判断算法的优劣是不正确的。或者,换句话说,时间复杂性函数不能采用 在某一机器上运行的绝对的时间单位,如秒、分… 作为衡量算法的优劣。 ·最坏情况下的时间复杂性和平均情况下的时间复杂性。 最坏情况下的时间复杂性: 平均情况下的时间复杂性:
operation: 1、在 data value 上:var a,b,c: sample; a = b + c; 2、在 元素:var a,b,c: sample; a [1]=1.2;
6
INTRO
7 物料管理
Algorithms and DataStructures:INTRO
2、什么是数据结构
· 程序 = 数据结构 + 算法 输入未处理的数据 算法 输出加工过的数据
2
INTRO
3 物料管理
Algorithms and DataStructures:INTRO
1、重要性
3、实例:银行帐号共 100000 个 如图所示,组成一个顺序存储的结构,存于计算机之中。插 入新帐号 75怎样进行呢? 插入新帐号 75:1、查找位置 2、移表 3、插入合适位置 移动一个结点,需 100us, 移动 100000 个结点需 100us ×100000 = 10 秒。每 天处理 10000 个帐号,需 30 小时,无 法接受。 如何快速地进行插入? 节省访问外存的 时间,是一个很重要的问题。
更新被除数、除数
·特征:1、有穷性:执行有穷步后结束。 2、确定性:每一步有确定的含义。 3、能行性:原则上能精确的进行,用纸和笔有限次完成。 4、输入: 5、输出:
9
INTRO
10 物料管理
Algorithms and DataStructures:INTRO
4、算法和算法分析
·实例: void bselectSort (int a[ ], const int n) { // 对 n 个整数 a[0], a[1], ······, a[n-2], a[n-1] 按非递减序进行排序 for ( int i = 0; i < n-1; i + + ) { int k = i; // 从a[ i ], ······, a[n-1] 中找到最小数组元素,放入a[ k ] for ( int j = i + 1; j < n; j + + ) if ( a[ j ] < a[k] ) k = j; // k 为a[ i ], ······, a[n-1] 中的最小数组元素的下标 int temp = a[i]; a[i] = a[k]; a[ k ] = temp; // 将a[ i ], ······, a[n-1] 中的最小数 } } // // 组元素a[ k ]放入a[ i ],两者交换。
4
INTRO
5 物料管理
Algorithms and DataStructures:INTRO
2、什么是数据结构
1、数据类型和数据结构 ·数据类型的类别: 1、原子数据类型: 数据值是原子数据值。如:int 2、结构数据类型: 数据值是可以再分解。如:sample array[1..3 ] of real value1 [1] [2] [3] 0 1.9 3.4 value2 [1] [2] [3] 5.3 2.2 4.2 value3 [1] [2] [3] 2.1 0.1 6.3
12
INTRO
13 物料管理
Algorithms and DataStructures:INTRO
4、算法和算法分析
3、大 O 表示法: ·例3、设 T(n) = 3n != O(2n) 注意: f(n)=O(g(n)) 意味着找到了 f(n) 的一个最“ 紧贴” 的上界 g(n)) 。或者说找到了最低 的上界。从算法的时间复杂性角度来看,象例2 中的 O(n4) 是没有意义的。 关于更严格的“紧贴渐进界”的概念,请看一下定义。 紧贴渐进界:设存在一个函数 f(n)=O(g(n)),如果对于每一个函数 h(n)都使得 f(n)=O(h(n)) ,也使得 g(n)=O(h(n)),就说 g(n) 是 f(n) 的紧贴渐进界。 例如:f(n)=3n+5;f(n)= O(n) 同样根据定义 f(n)= O(n2) 。但是,我们通常所讲的 f(n) 的 紧贴渐进界是f(n)= O(n) ,而不是f(n)= O(n2)。这可用反证法加以证明。 反证法:上例中 g(n)=n。假设 g(n)=n 不是 f(n)=3n+5的紧贴渐进界,那么根据定义对于使 得 f(n)=O(h(n)) 的函数 h(n), g(n) != O(h(n))。 设存在一个函数 h (n),使得 f(n)=3n+5= O(h(n)) ,且 g(n) != h(n)。由于3n+5= O(h(n)) , 那么根据大 O 法的定义,必定存在二个正数c和n0,使得对于所有的 n >= n0 ,3n+5 =< c h(n)。很显然,对一切 n >= 0,有 n =< 3n+5 ,所以 g(n) =< c h(n)。 这样,根据大O 法 的定义有g(n)=O(h(n)) 。但这是同假设相矛盾的。因此, f(n)= O(n) 是一个紧贴渐进界。