数 据 结 构 与 算 法.

Slides:



Advertisements
Similar presentations
稳恒磁场习题课. 类比总结 1. 产生 静止电荷运动电荷 2. 被作用 电荷 与电荷运动 状态无关 只对运动电荷作用 3. 表观 性质 力力  作功 力力 4. 基本物 理量 5. 基本 定理 基本 性质 表一 场的产生与性质静电场稳恒磁场.
Advertisements

12.1 轴对称( 1 ) 一.课堂引入 中国古代的建筑举世闻名,我们看看以下建 筑有什么共同特征 ?
12.1 轴对称( 1 ) 给我最大快乐的, 不是已懂的知识, 而是不断的学习 高斯.
本节聚焦 ♣ 减数分裂的含义是什么 ? ♣ 配子的形成为什么必须经 过减数分裂 ? ♣ 减数分裂是怎样进行的 ?
12 届减数分裂复习(蔡志敬) 给你一双翅膀,让你自由翱翔!. ※真核细胞分裂的方式 有丝分裂 无丝分裂 减数分裂.
While 迴圈 - 不知重複執行次數
植科院57期党校党课讨论安排 植科院学生党建工作办公室.
職務法庭與 法官退場機制 行政訴訟及懲戒廳報告
營利事業所得稅查核準則 相關概念介紹 南區國稅局 新營分局 林俊標 各位學員大家好:
数据结构 杨鹏宇 QQ: 版权所有,转载或翻印必究
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
Introduction 基本概念 授課老師:蕭志明
算法设计与分析 李清勇 教授 办公室:第九教学楼北201.
氧气的制法 装置 原理 练习 随堂检测.
中國古典文獻學 主講:羅積勇教授.
请说出牛顿第一定律的内容。.
第十一章 网络计划技术 建筑施工课件.
文明史观 文明史观,通常被称为文明史研究范式,是研究历史的一种理论模式。人类社会发展史,从本质上说就是人类文明演进的历史。
南美洲 吉林省延吉一高中 韩贵新.
辨析并修改病句   ≪考试说明≫ 对本能力点的要求是:“能够辨析.并修改病句”,“能力层次D”。.
3.2 运输线路的选择 3.2.1运输线路的选择原则 3.2.2运输线路的选择应考虑的因素 运输线路的选择方法.
数据结构 第一章 绪论.
第三课 走向自立人生.
作文教学如何适应高考的要求 漳州市普教室 李都明
高考历史答题 技巧与方法.
数据结构(C语言版) Data Structure
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
成才之路 · 语文 人教版 · 必修2 路漫漫其修远兮 吾将上下而求索.
四种命题.
国际技术合作 ——案例分析 组员:王磊 柯银建 陆亦奇 费晓伟.
 第20讲 中国的交通.
第一次世界大战的时候,一位法国飞行员在2 000 m高空飞行的时候,发现脸旁有一个小玩意儿在游动着,飞行员以为这是一只小昆虫,敏捷地把它一把抓了过来,令他吃惊的是,他发现他抓到的竟是一颗德国子弹!     问题:大家都知道,子弹的飞行速度是相当快的,这名法国飞行员为什么会有这么大的本领呢?为什么飞行员能抓到子弹?
第二单元 基因和染色体的关系 第1讲 减数分裂和受精作用.
公司法(六) 股份有限公司 1.
小小节水员自然科普课
数据结构与算法 数据结构与算法实验
運輸與空間的交互作用 運輸發展的階段 一、分散的港口 二、侵入路線 三、發展支線 四、初步相互連結 五、完全相互連結 六、高度優越的幹線
蛮力法.
3-2 轉動的地球 內容分布於 課本
《美国的两党制》选考复习 温州第二高级中学 俞优红 2018年6月14日 1.
第三章 堆疊與佇列的基本應用 3-1 簡介堆疊(Stack) 3-2 迷宮問題研究 3-3 佇列(queue)的介紹
Chap 3 堆疊與佇列 Stack and Queue.
If … else 選擇結構 P27.
计算复杂性和算法分析 计算机科学导论第六讲
递推算法 递推是一种重要的数学方法,在数学和计算机领域都有广泛应用。这种算法的特点是:一个问题的求解需要一系列的计算,在已知条件和所求问题之间总存在某种相互联系的关系。在计算时,可以找到前后过程间的数量关系,即递推。递推算法包括顺推和逆推。 递推算法的关键在于找到相邻数据项之间的关系,即递推关系,建立递推关系式。我们有时将递推算法看成一种特殊的迭代算法。
Introduction to the C Programming Language
計數式重複敘述 for 迴圈 P
数据结构 第一章 绪论.
第六章 小地区控制测量 §6.1 控制测量概述 §6.2 导线测量 §6.3 交会定点 §6.4 高程控制测量 §6.5 GPS控制测量简介.
计算机算法设计与分析(第3版) 王晓东 编著 电子工业出版社.
Tree & Binary Tree.
2-3 數學歸納法 歸納法 歸納臆測 數學歸納法.
C语言版 软件与理论教研室 张泽宝 哈尔滨工程大学计算机科学与技术学院.
第1章 绪论 2019/4/16.
第6章 反比例函数 第二节 反比例函数的图象和性质(一).
第五章 相交线与平行线 三线八角.
北师大版八年级数学上册 3·1 生活中的平移 澂江四中 李丽波.
第2讲 绪论(二).
第1章 绪论(二) 教学目标 理解算法的特性及评价标准 掌握算法时间复杂度和空间复杂度的分析方法 1/
细胞增殖 意义:生物体生长、发育、繁殖和遗传的基础 有丝分裂 减数分裂 无丝分裂 真核细胞的分裂方式有.
演算法的效率分析.
本节内容 Lua基本语法.
第三章 行列式 第一节 线性方程组与行列式 第二节 排列 第三节 n阶行列式 第四节 余子式与行列式展开 第五节 克莱姆规则.
第7章 概率算法 欢迎辞.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
第二章 Java基本语法 讲师:复凡.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
第2节 大气的热力状况 基础知识回顾 重点难点诠释 经典例题赏析.
數學遊戲二 大象轉彎.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
Presentation transcript:

数 据 结 构 与 算 法

数据结构课程的地位 它是计算机专业及相关专业的核心课程之一,是计算机及相关专业的重要骨干基础课程。 它针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。即其研究目的是研究有效地组织和处理非数值类型数据的理论、技术和方法。

数据结构的核心研究内容 数据的逻辑结构、存储结构及它们之间的关系和相应的基本操作运算的定义和实现。 本书围绕数据结构的三种基本结构:线性结构(第2-5章)、树形结构(第6章)和图形结构(第7章)展开讨论,研究解决如下问题:一个具体问题的逻辑数据结构是什么?适宜选用什么样的存储结构?采用什么样的操作实现算法效率更高?

学时数:50(30学时授课+20学时上机) 学 分: 3 教材:严蔚敏等,数据结构(C语言版),清华大学出版社 参考书: [1]朱战立编著,数据结构(使用C语言)第3版,西 安交通大学出版社 ,2003年 [2] 数据结构学习指导与典型题解,朱战立等编著,西安交通大学出版社 ,2002年

内 容 安 排 1 2 6 4 7 3 8 9 5 10 20 章 内 容 学时 绪 论 树和二叉树 线性表 图 栈和队列 排序 串 查找 内 容 学时 1 绪 论 2 6 树和二叉树 4 线性表 7 图 3 栈和队列 8 排序 串 9 查找 5 数组 10 上机(共十次) 20

对学生的几点要求 1、上课认真听讲,适当做好笔记,按时交作业。 2、考试成绩分两部分:平时成绩(包括出勤和上机实验)占30%,期末成绩占70%。 3、课后需要多读课文和参考书,上网查看相关内容,在理解基本内容的基础上,多看、多做习题。 4、上机实验十分重要,一定要在上机前做好充分准备,多采用不同的数据存储结构和不同的实现算法解决一个问题。

第1章 绪 论 讨论5个问题: 1.1 数据结构的基本概念 1.2 学习数据结构的意义 1.3 数据结构涵盖的主要内容 第1章 绪 论 讨论5个问题: 1.1 数据结构的基本概念 1.2 学习数据结构的意义 1.3 数据结构涵盖的主要内容 1.4 什么是抽象数据类型 1.5 算法效率的度量

1.1 数据结构的基本概念 1、举例 建立一个学生档案。学生表包括学号、姓名、性别、籍贯。要求:查找“王红”是否存在。 解决的方法步骤: 1.1 数据结构的基本概念 1、举例 建立一个学生档案。学生表包括学号、姓名、性别、籍贯。要求:查找“王红”是否存在。 解决的方法步骤: 如何记录所有学生记录(及选择何种逻辑数据结构)? 选择何种存储结构? 若把所有记录依次存储在一个数组中——采用顺序存储结构 若采用指针链表——采用链式存储结构

2、基本术语 (1)数据:所有能被计算机识别、存储和处理的符号的集合(包括数字、字符、声音、图像等信息 )。 (2)数据元素:是数据的基本单位,具有完整确定的实际意义。在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成。 (3)数据项:构成数据元素的项目。它是数据不可分割的最小单位。 (4)数据类型:指一个类型和定义在这个类型上的操作集合。例:C语言(基本类型:整型、浮点型、字符型等构造类型:数组、结构、联合、指针、枚举等) (5)抽象数据元素:抽象定义的、没有实际含义的数据元素。 (6)抽象数据类型:用户自己定义的数据类型。

2、基本术语 (续) (7)数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。或按照一定逻辑关系组织,并按一定存储方法存储的数据的集合,且需要定义一系列运算。逻辑结构、存储结构和运算合称为三要素。表示为: Data_Structure=(D, R) 其中,D—元素有限集,R—关系有限集

1.2 学习数据结构的意义 程序设计=好算法+好结构 同样的数据对象,用不同的数据结构来表示,运算效率可能有明显的差异。 1.2 学习数据结构的意义 计算机内的数值运算依靠方程式,而非数值运算(如表、树、图等)则要依靠数据结构。 数据结构是一门学科,针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作等等。   同样的数据对象,用不同的数据结构来表示,运算效率可能有明显的差异。 程序设计=好算法+好结构

1.3 数据结构涵盖的内容

解释1: 什么叫数据的逻辑结构? 逻辑结构可细分为4类:   答:指数据元素之间的逻辑关系。即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。 逻辑结构可细分为4类: 集合结构: 仅同属一个集合 线性结构: 一对一(1:1) 树 结 构: 一对多(1:n) 图 结 构: 多对多 (m:n) 线 性 非线性

b c a e f d 例:用图形表示下列数据结构,并指出它们是属于线性结构还是非线性结构。 (1) S=(D, R)   例:用图形表示下列数据结构,并指出它们是属于线性结构还是非线性结构。 (1) S=(D, R) D={ a, b, c, d, e, f } R={(a,e), (b,c), (c,a), (e,f), (f,d)} 解: 上述表达式可用图形表示为: b c a e f d 此结构为线性的。

d1 d5 d2 d4 d3 (2) S=(D, R) D={di | 1≤i≤5} R={(di , dj ), i<j} 解:上述表达式可用图形表示为: d1 d5 d2 d4 d3 该结构是非线性的。

顺序、链式、索引、散列 解释2:什么叫数据的物理结构? 例:复数3.0-2.3i 的两种存储方式:    答:物理结构亦称存储结构,是数据的逻辑结构在计算机存储器内的表示(或映像)。它依赖于计算机。 存储结构可分为4大类: 顺序、链式、索引、散列 例:复数3.0-2.3i 的两种存储方式: 法1:地址 内容 法2:地址 内容 0415 0302 3.0 0300 -2.3 -2.3 0302 3.0 0300 2字节

插入、删除、修改、查找、排序 解释3:什么是数据的运算? 答:在数据的逻辑结构上定义的操作算法。 它在数据的存储结构上实现。 最常用的数据运算有 5 种: 插入、删除、修改、查找、排序

1.4 什么是抽象数据类型 讨论: 1 数据类型与抽象数据类型的区别? 2 抽象数据类型如何定义? 3 抽象数据类型如何表示和实现?

1 数据类型与抽象数据类型的区别 数据类型:是一个值的集合和定义在该值上的一组操作的总称。 抽象数据类型:由用户定义,用以表示应用问题的数据模型。它由基本的数据类型构成,并包括一组相关的服务(或称操作) 它与数据类型实质上是一个概念,但其特征是使用与实现分离,实行封装和信息隐蔽(独立于计算机)

2 抽象数据类型如何定义 抽象数据类型可以用以下的三元组来表示: ADT = (D,R,P) 数据对象 D上的关系集 D上的操作集 2 抽象数据类型如何定义 抽象数据类型可以用以下的三元组来表示: ADT = (D,R,P) 数据对象 D上的关系集 D上的操作集 ADT抽象数据类型名{ 数据对象:<数据对象的定义> 数据关系:<数据关系的定义> 基本操作 :<基本操作的定义> } ADT抽象数据类型名 ADT常用定义格式

例:给出自然数(Natural Number )的抽象数据类型定义。 ADT Natural_Number is objects: 一个整数的有序子集合,它开始于0,结束于机器能表示的最大整数 (MAX INT) functions: 对于所有的 x, y  Natural_Number; TRUE, FALSE  Boolean; +, -, <, = = ,=等都是可用的服务。 Zero ( ): Natural Number 返回 0 IsZero(x): Boolean if (x==0) 返回TRUE else 返回 FALSE Add(x, y): Natural Number if (x+y <= MAX INT)返回 x+y else 返回 MAX INT Subtract(x,y): Natural Number if (x<y)返回0 else 返回x-y Equal(x,y): Boolean if (x== y)返回TRUE else 返回FALSE Successor(x) : Natural Number if (x == MAX INT)返回x else 返回x+1 end Natural_Number

1.4.3 抽象数据类型如何表示和实现 抽象数据类型可以通过固有的数据类型(如整型、实型、字符型等)来表示和实现。 (参看课本P28,线性表的抽象数据类型,思考用具体C语言如何实现) 注意:上机时要必须用具体语言实现,如C或C++等

1.5 算法效率的度量 讨论: 1 什么是算法?如何评判算法的好坏? 2 时间复杂度和空间复杂度如何表示? 3 计算举例

1 什么是算法?如何评判一个算法的好坏? 算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。 1 什么是算法?如何评判一个算法的好坏?   算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。 好的程序设计:好算法+好结构 算法的基本特性: 有穷性、确定性、可行性、必有输出 算法评价指标: 正确性、可读性、健壮性、高效率与低存储量需求(见课本P20) 常用时间复杂度来衡量 常用空间复杂度来衡量

2 时间复杂度和空间复杂度如何表示? 多项式阶 时间复杂度T(n)按数量级递增顺序为: 注: 1) O()为渐近符号。 2 时间复杂度和空间复杂度如何表示? 多项式阶 时间复杂度T(n)按数量级递增顺序为: 复杂度低 复杂度高 注: 1) O()为渐近符号。 2) 空间复杂度S(n)按数量级递增顺序也与上表类似。

渐进符号(O)的定义:当且仅当存在一个正的常数 C,使得对所有的 n  n0 ,有 f(n)  Cg(n),则: f(n) = O(g(n)) 例: 3n+2=O(n) 因为 3n+24n for n2 6*2n+n2=O(2n) 因为6*2n+n2 7*2n for n4

算法的时间复杂度由嵌套最深层语句的频度决定 3 计算举例 例:分析以下程序段的时间复杂度。   i=1; ① while(i<=n)    i=i*2; ② 解: 该算法的运行时间由程序中所有语句的频度(即该语句重复执行的次数)之和构成。 算法的时间复杂度由嵌套最深层语句的频度决定 分析:显然,语句①的频度是1。设语句2的频度是f(n),则有: 即f(n)≤log2n,取最大值f(n)=log2n 所以该程序段的时间复杂度T(n)=1+f(n)=1+ log2n= O( log2n)

本章小结 数据结构课程—— 数据结构+算法=程序,涉及数学、计算机硬件和软件。 数据结构定义——指互相有关联的数据元素的集合,可用data_Structure=(D,R)表示。 数据结构内容——数据的逻辑结构、存储结构和基本运算 。 数据结构描述工具——抽象数据类型和C语言。 算法效率——时间效率和空间效率 。

课后作业 一、简答题 1 设有数据逻辑结构为: B=(K,R);K={K1,K2…Kn}; R={<K1,K3>,<K1,K8>, <K2,K3>, <K2,K4>, <K2,K5>, <K3,K9>, <K5,K6>, <K8,K9>, <K9,K7>, <K4,K7>, <K4,K6>} 画出这个逻辑结构的图示,并确定相对于关系R,哪些结点是开始结点,哪些结点是终端结点

2 有下列几种用二元组表示的数据结构,画出它们分别对应的逻辑图形表示,并指出它们分别属于何种结构。 A=(K,R),其中K={a,b,c,d,e,f,g,h}; R={r},r={<a,b>,<b,c>, <c,d>, <d,e>, <e,f>, <f,g>, <g,h>} B=(K,R),其中K={a,b,c,d,e,f,g,h}; R={r}, r={<d,b>,<d,g>, <d,a>, <b,c>, <g,e>, <g,h>, <e,f>}

二、求下列程序段的时间复杂度 (1) for (I=0;I<n;I++) (4) fact(int n) for (j=0;j<m;j++) {if (n<=1) A[I][j]=0; return 1; (2) I=s=0; else While (s<n) return(n*fact(n-1)); { I++; } s+=I; (5) s=0; } for(I=0;I<=n;I++) (3) I=1; for(j=0;j<=n;j++) While (I<=n) for(k=0;k<I+j;k++) I=I*3; s++;