学习的目的: 升学?就业?创业?终身学习...

74
思思 •思思思思思•思思 思思思 思思思 思思思思 ??? •思思 思思思思思思思 思思思思 :, •思思思思 思思思思

description

思考. 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得. 考研?. 选择喜欢的专业,适合的学校 掌握基础,循序渐进 考试科目:合理安排复习时间 英语、数学、政治、专业课. 考研专业课. 试卷考核内容: 4 个部分: 数据结构 45 分、 计算机组成原理 45 分、 操作系统 35 分 计算机网络 25 分。 题型方面: 单项选择题占 80 分 综合应用题 70 分. 本课程内容: 教是为了不教,学是为了会学. 数据结构: 目标:在理解算法思想的基础上读懂算法,进而设计算法。 内容: 1. 思想 - PowerPoint PPT Presentation

Transcript of 学习的目的: 升学?就业?创业?终身学习...

Page 1: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

思考

• 学习的目的:•升学?就业?创业?终身学习

• 心态:想法决定行为,张驰有度

• 课程要求:学有所得

Page 2: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

考研?

• 选择喜欢的专业,适合的学校

• 掌握基础,循序渐进

• 考试科目:合理安排复习时间

• 英语、数学、政治、专业课

Page 3: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

考研专业课

试卷考核内容: 4 个部分:– 数据结构 45 分、– 计算机组成原理 45 分、– 操作系统 35 分– 计算机网络 25 分。

题型方面:– 单项选择题占 80 分– 综合应用题 70 分

Page 4: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

本课程内容:教是为了不教,学是为了会学

数据结构:• 目标:在理解算法思想的基础上读懂算法,

进而设计算法。• 内容: 1. 思想      2. 算法分析

    3. 算法练习    4. 考研真题

英语:翻译,写作。看懂,翻译,熟读,背诵,默写

Page 5: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

考核方式与分值比例项目 具体内容 分值出勤 迟到、早退、旷课、请假 20分

课堂表现 提问、抢答、小组讨论 20分作业 课后作业 30分测验 共 2次 30分

出勤:无意外情况,迟到一次扣掉 2 分; 无故旷课扣掉 10 分;请假 1 次扣 3 分,超过 3 次,按旷课处理。以上扣分累计上限 20

分。课堂表现:提问:教师上课随机叫人回答问题、抢答、小组讨论,

每回答对一次,标记一次,本学期完成 3 次即可得到 20 分,回答次数不限。作业:课后作业共批改 2 次,每次 15 分,二次作业共 30 分测验:期中一次,期末一次,每次折合为 15 分。共 30 分。

Page 6: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

数据结构数据结构DATA STRUCTUREDATA STRUCTURE

Page 7: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

考查目标定位1. 理解数据结构的基本概念,逻辑结构、存

储结构,以及各种基本操作的实现;2. 时间复杂度、空间复杂度分析;3. 能够选择合适的数据结构和方法进行问题

求解,4. 具备采用 C 或 C++ 或 JAVA 语言设计程序

与实现算法的能力。

Page 8: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

数据结构考研大纲

一、线性表

(一)线性表的定义和基本操作(二)线性表的实现1. 顺序存储结构2. 链式存储结构3. 线性表的应用

二、栈、队列和数组

(一)栈和队列的基本概念(二)栈和队列的顺序存储结构(三)栈和队列的链式存储结构(四)栈和队列的应用(五)特殊矩阵的压缩存储

三、树与二叉树

(一)树的概念 (二)二叉树1. 二叉树的定义及其主要特征2. 二叉树的顺序存储结构和链式存储结构3. 二叉树的遍历4. 线索二叉树的基本概念和构造5. 二叉排序树6. 平衡二叉树 (三)树、森林1. 书的存储结构2. 森林与二叉树的转换3. 树和森林的遍历 (四)树的应用       1. 等价类问题       2. 哈夫曼( Huffman )树和哈夫曼编码

Page 9: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

数据结构考研大纲三、图 (一)图的概念 (二)图的存储及基本操作              1. 邻接矩阵法              2. 邻接表法 (三)图的遍历              1. 深度优先搜索              2. 广度优先搜索 (四)图的基本应用及其复杂度分析              1. 最小(代价)生成树              2. 最短路径       3.拓扑排序       4.关键路径四、查找(一)查找的基本概念(二)顺序查找法(三)折半查找法(四) B- 树(五)散列( Hash )表及其查找(六)查找算法的分析及应用

五、内部排序 (一)排序的基本概念 (二)插入排序              1.直接插入排序              2. 折半插入排序 (三)气泡排序( bubblesort ) (四)简单选择排序 (五)希尔排序( shellsort ) (六)快速排序 (七)堆排序 (八)二路归并排序( mergesort ) (九)基数排序 (十)各种内部排序算法的比较 (十一)内部排序算法的应用

Page 10: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

• 1.1 《数据结构》课程研究的内容

• 1.2 《数据结构》课程的发展历史及课程重要性

• 1.3 基本概念和术语

• 1.4 数据类型、抽象数据类型、算法

第一章 绪论

Page 11: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

本节目标理解:对比辨析深刻理解概念1. 数据结构,程序与算法 2. 存储结构与逻辑结构3. 数据、数据元素、数据项、数据对象、数

据结构4. 数据类型、抽象数据类型

掌握:1. 抽象数据类型的定义

Page 12: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

1.1 《数据结构》课程研究的内容

数据结构就是研究计算机非数值计算问题中的数据对象以及它们之间的关系和操作算法的学科,具体主要包含三个方面的内容:

• ①数据的逻辑结构 --数据关系之间的逻辑关系• ②数据的存储(物理)结构 --数据的逻辑结构

在计算机中的表示• ③操作算法 ----插入、删除、修改、查询、排

序等

Page 13: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

• 其中,• 数据的逻辑结构: • 集合• 线性结构 -----表、栈、队列• 非线性结构 -----树、图

• 数据的存储结构: • 内存:顺序存储结构 -----数组• 链式存储结构 -----指针 • 外存:索引存储•    散列存储

Page 14: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

• 数据结构主要强调两个方面的内容:• ①数据之间的关系,即数据之间的逻辑

结构和存储结构;• ②针对这些关系的基本操作。• 类与数据结构之间的对应关系 :

Page 15: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

• 1. 数据 : 能输入到计算机中的符号集合 .

• 2. 数据元素 : 数据的基本单位 .

• 3. 数据对象 :

具有相同性质的数据元素的集合 .

• 4. 数据结构 : DATA STRUCTURE

数据及其相互关系的集合 .

       分为逻辑结构和存储结构 (物理结构 ).

           数据结构 ---------------- 类 CLASS

数据之间的关系 ------- 属性 基本操作 ------------- 方法

Page 16: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

表示 : Data_Structure =(D , R)

• 例 :

数据结构 T=(D , R) ,其中:• D={a , b , c , d , e , f , g , h , i , j}

• R={(a , b) , (a , c) , (a , d) , (b , e) ,(c , f) , (c , g) , (d , h) , (d , i) ,(d , j)}

• T是一个树形结构。• 其中:D是数据元素的有限集,R是D上关系

的有限集

Page 17: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

5. 5. 数据类型数据类型 定义:定义:一类数据的集合一类数据的集合 , , 以及定义于这个以及定义于这个数值集合上的一组操作的总称。数值集合上的一组操作的总称。

CC 语言中的数据类型语言中的数据类型 基本数据类型如基本数据类型如 intint 等、等、指针类型、数组类型、结构体类型、共用体类型

Page 18: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

18 设计数据结构浙江大学 1994 一 、 3 ( 5分)

用来表示某一银行储户的基本信息: 账号、姓名、开户年月日、储蓄类型、存入累加数、利息、帐面总数。

struct node {int year,month,day; }date;typedef struct {int num;//帐号 char name[8];//姓名 struct node date;//开户年月日 int tag;// 储蓄类型,如: 0- 零存, 1- 一年定期…… float put;// 存入累加数; float interest;//利息 float total;//帐面总数 }count ;Count CHX,CHY;

struct 结构体名 { 类型名 1 成员名 1 ; 类型名 2 成员名 2 ; …… ; }变量名表列 ;typedef 数据类型 新类型名;Typedef struct{ 类型名 1 成员名 1 ; 类型名 2 成员名 2 ; …… ;} 定义的新数据类型名;新类型名 变量名;// 声明新的类型名代替已有类型名

Page 19: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

6. 6. 抽象数据类型抽象数据类型 (ADTs: Abstract Data Types)

• 抽象数据类型是指一个数学模型以及定义

在该模型上的一组操作。• 抽象数据类型的定义仅取决于它的一组逻

辑特性,而与其在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。

Page 20: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

ADT ADT 抽象数据类型名 {数据对象:数据对象: << 数据对象的定义数据对象的定义 >>数据关系: < 元素间关系定义 >基本操作:基本操作: 操作操作 11 初始条件:初始条件: 操作结 操作结果:果: 操作 操作 22 ………… 操作操作 nn }ADT }ADT 抽象数据类型名抽象数据类型名

抽象数据类型的定义:ADT triplet ADT triplet {数据对象:数据对象: D={e1,e2,e3|D={e1,e2,e3|e1,e2,e3 ElemSetd}∈e1,e2,e3 ElemSetd}∈数据关系: R1={<e1,e2>,<e2,e3>}基本操作:基本操作: Get(T,i,&e)Get(T,i,&e) 初始条件:三元组初始条件:三元组 TT 存在,存在, 1≤ i ≤3 1≤ i ≤3 操作结果: 用操作结果: 用 ee 返回返回 TT 的第的第 ii 元的元的值 值 Max(T,&e)Max(T,&e) 初始条件:三元组初始条件:三元组 TT 存在存在 操作结果:用 操作结果:用 ee 返回返回 TT 的三个元的三个元素中素中 的最大值 的最大值 …………}ADTtriplet }ADTtriplet

Page 21: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

3. 数据类型和抽象数据类型是如何定义的。二者有何相同和不同之处,抽象数据类型的主要特点是什么?使用抽象数据类型的主要好处是什么?【北京邮电大学 1994 一( 8 分)】

1. 数据类型是一个值的集合和操作的集合。如数据类型是厂家提供给用户的已实现了的数据结构。

2. “抽象数据类型( ADT )”指一个数学模型及定义在该模型上的一组操作。“抽象”的意义在于数据类型的数学抽象特性。抽象数据类型的定义仅取决于它的逻辑特性,而与其在计算机内部如何表示和实现无关。

3. 抽象数据类型和数据类型实质上是一个概念。4. ADT 的范围更广,它已不再局限于机器已定义和实现的数据类

型,还包括用户在设计软件系统时自行定义的数据类型。5. 使用抽象数据类型定义的软件模块含定义、表示和实现三部分,封装在一起,对用户透明(提供接口),不必了解实现细节

Page 22: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

11.数据结构与数据类型有什么区别?哈尔滨工业大学 2001 三、 1 ( 3 分)

• “数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。作为科学概念,目前尚无公认定义,一般认为,

• 讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。

• 数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构。

Page 23: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

1. 数据结构是一门研究什么内容的学科?【燕山大学 1999 二、 1 ( 4 分)】

2. 数据元素之间的关系在计算机中有几种表示方法?各有什么特点?【燕山大学 1999 二、 2( 4 分)  】 // 数据的存储结构由哪四种基本的存储方法实现?【山东科技大学 2001 一、 1( 4 分)】

• 是研究在非数值计算的程序设计问题中,计算机的操作对象及对象间的关系和施加于对象的操作等的学科。

• 顺序存储、链式存储、索引存储、散列存储

Page 24: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

4. 回答问题(每题 2 分)【山东工业大学 1997 一 ( 8 分)】

( 1 )在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系?

( 2 )若逻辑结构相同但存储结构不同,则为不同的数据结构。这样的说法对吗?举例说明之。

( 3 )在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说法对吗?举例说明之。

( 4 )评价各种不同数据结构的标准是什么?

( 1 )数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则是依赖于存储结构。

Page 25: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

4. 回答问题(每题 2 分)【山东工业大学 1997 一 ( 8 分)】

( 2 )若逻辑结构相同但存储结构不同,则为不同的数据结构。这样的说法对吗?举例说明之。

( 3 )在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说法对吗?举例说明之。

( 4 )评价各种不同数据结构的标准是什么?

( 2 )逻辑结构相同但存储不同,可以是不同的数据结构。例如,线性表的逻辑结构属于线性结构,采用顺序存储结构为顺序表,而采用链式存储结构称为线性链表。

Page 26: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

4. 回答问题(每题 2 分)【山东工业大学 1997 一 ( 8 分)】

( 3 )在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说法对吗?举例说明之。

( 4 )评价各种不同数据结构的标准是什么? ( 3 )栈和队列的逻辑结构相同,其存储表示也可相同(顺序存储和链式存储),但由于其运算集合不同而成为不同的数据结构。

Page 27: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

4. 回答问题(每题 2 分)【山东工业大学 1997 一 ( 8 分)】

( 4 )评价各种不同数据结构的标准是什么?

( 4 )一是所选数据结构是否准确、完整的刻划了问题的基本特征;二是是否容易实现(如对数据分解是否恰当;逻辑结构的选择是否适合于运算的功能,是否有利于运算的实现;基本运算的选择是否恰当。)

Page 28: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

8.对于一个数据结构,一般包括哪三个方面的讨论?【北京科技大学 1999 一、 1 ( 2分)】

10. 若将数据结构定义为一个二元组( D ,R ) ,说明符号 D , R 应分别表示什么?【北京科技大学 2001 一、 1 ( 2 分)】

• 逻辑结构、存储结构、操作(运算)

• D是数据元素的有限集合• S 是 D 上数据元素之间关系的有限集合。

Page 29: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

7根据数据元素之间的逻辑关系,一般有哪几类基本的数据结构?【北京科技大学 1998 一、 1 】【同济大学 1998 】

• 集合• 线性结构• 树形结构• 图形或网状结构

Page 30: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

程序 = 数据结构 + 算法 • 算法:是对特定问题求解的一种描述,是为

解决某一类问题而设计的一个指令序列。

• 程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。

• 程序 = 数据结构 + 算法

Page 31: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

小结

1. 考研的目的、心态;考试大纲解析;

2. 理解数据结构的基本概念及相关术语• 理解:对比辨析深刻理解概念

– 数据结构,程序与算法 – 存储结构与逻辑结构– 数据、数据元素、数据项、数据对象、数据结构– 数据类型、抽象数据类型

• 掌握:– 抽象数据类型的定义

Page 32: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得
Page 33: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

第二节

• 复习:1. 数据结构研究的主要内容?2. 常见的逻辑结构及物理结构有哪些?3. 程序、数据结构和算法的关系?4. 数据类型的定义5. 抽象数据类型的定义

Page 34: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

复习及导入:学生信息处理复习及导入:学生信息处理• 设计数据结构,用于表示学生的信息。设计数据结构,用于表示学生的信息。• 学生的信息包括:学生的信息包括:

– 学号、姓名、性别、年龄、专业等数据项。学号、姓名、性别、年龄、专业等数据项。• 功能要求功能要求

– ⑴ ⑴ 插入:将某学生的基本信息插入到表中;插入:将某学生的基本信息插入到表中;– ⑵ ⑵ 删除:将满足条件的基本信息删除;删除:将满足条件的基本信息删除;– ⑶ ⑶ 修改:对基本信息的数据项进行修改;修改:对基本信息的数据项进行修改;– ⑷ ⑷ 查询:查找满足条件的学生;查询:查找满足条件的学生;– ⑸ ⑸ 输出:将信息表中的全部(或满足条件)基本信息输出:将信息表中的全部(或满足条件)基本信息

输出。输出。

Typedef struct{ int num; // 学号 Char name[8]; //姓名 Char sex[2]; // 性别 Int age; //年龄 Char major[24]; // 专业}student;

Page 35: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

新授主要内容

1. 算法2. 算法特性及评价标准3. 算法时间复杂度计算4. C 语言基础知识5. 算法分析

Page 36: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

1.4 算法和算法分析 • 1. 1. 定义:定义:算法( Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。

• 2. 2. 特性:特性:–输入输入 有有 00 个或多个输入个或多个输入–输出输出 有一个或多个输出 有一个或多个输出 (( 处理结果处理结果 ))– 确定性 确定性 不会产生二义性– 有穷性有穷性 算法应在执行有穷步后结束 算法应在执行有穷步后结束– 可行性 可行性 在现有环境下能够实现在现有环境下能够实现

Page 37: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

3. 评价算法的标准

• 正确性• 可读性• 健壮性 (鲁棒性 )• 时间复杂性• 空间复杂性4. 算法的描述方法 (1)自然语言 (2) 流程图 (3) 伪代码 (4) 程序设计语言

5.评价一个好的算法,您是从哪几方面来考虑的?【大连海事大学 96 二、 3 ( 2 分】【中山大学 98 三、 1 ( 5分】

Page 38: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

5. 5. 算法分析(算法分析(时间复杂度、空间复杂时间复杂度、空间复杂度)度) 时间复杂度时间复杂度: : 数量级的思想T(n) 是问题规模 n 的函数,当 n→∞ ,T(n) 的数量级为算法的渐近时间复杂度 O(n)方法:寻找程序中最复杂的程序段的执行数量级

例 例 11 :求两个方阵的乘积 :求两个方阵的乘积 CC == A*BA*B

MATRIXMLT(float A[n][n],float B[n][n],float C[n][n])MATRIXMLT(float A[n][n],float B[n][n],float C[n][n])

{ int i,j,k;{ int i,j,k;

for(i=0;i<n;i++) //for(i=0;i<n;i++) //

for(j=0;j<n;j++) //n(n+1)for(j=0;j<n;j++) //n(n+1)

{ C[i][j]=0; //n*n{ C[i][j]=0; //n*n

for( k=0;k<n;k++) //n*n*(n+1)for( k=0;k<n;k++) //n*n*(n+1)

C[i][j]+=A[i][k]*B[k][j] //n*n*nC[i][j]+=A[i][k]*B[k][j] //n*n*n

}}

}}

)(1232)( 323 nOnnnnT

n+1n+1

Page 39: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

例 例 22 ::x=1;x=1;

for (i=1;i<=n;i++)for (i=1;i<=n;i++)

for (j=1;j<=i;j++)for (j=1;j<=i;j++)

for (k=1;k<=j;k++)for (k=1;k<=j;k++)

x++;x++;

)()6/()( 33 nOnOnT

Page 40: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

练习 19. :写出下面算法中带标号语句的频度。北京邮电大学 1997 二( 10 分)

TYPE ar=ARRAY[1..n] OF datatype; PROCEDURE perm ( a: ar; k, n: integer); VAR x: datatype; i:integer; BEGIN       ( 1 ) IF k=n THEN BEGIN ( 2 ) FOR i:=1 TO n DO ( 3 ) write (a[i]); writeln; END ELSE BEGIN                ( 4 ) FOR i:=k TO n DO ( 5 ) a[i]:=a[i]+i*i; ( 6 ) perm (a, k+1, n); END; END;设 k 的初值等于 1 。

1. N2. N+13. N4. (n+4)(n-1)/2 5. (n+2)(n-1)/2 6. n-1

Page 41: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

20 分析下面程序段中循环语句的执行次数。

i:=0;s:=0;n:=100;

REPEAT

i:=i+1;

s:=s+10*i;

UNTIL NOT((i<n) AND (s<n));

【北京邮电大学 1998 四、 1 ( 5 分)】

4(i=4,s=100)

Page 42: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

25.有下列运行时间函数:

( 1 ) T1 (n)=1000;

( 2 ) T2(n)=n2+1000n;

( 3 ) T3(n)=3n3+100n2+n+1;

分别写出相应的大 O 表示的运算时间。【吉林工业大学 1999 二( 12 分)】

1. O(1)2. O(n2)3. O(n3)

Page 43: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

26. 试给出下面两个算法的运算时间。

( 1 ) for i←1 to n do x ← x+1 END( 2 ) for i← 1 to n do for j←1 to n do x← x+1 end end【中科院自动化研究所 1995 二、 2 ( 6 分)】

1. O(n)2. O(n2)

Page 44: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

常数阶常数阶对数阶对数阶线性阶线性阶线性对数阶线性对数阶平方阶平方阶立方阶立方阶………………KK 次方阶次方阶指数阶指数阶

)1(O

常见的时间复杂度,按数量级递增排序:常见的时间复杂度,按数量级递增排序:

)(log2 nO

)(nO

)log( 2 nnO

)( 2nO

)( 3nO

)( knO

)2( nO

Page 45: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

28.将下列函数,按它们在 n→∝ 时的无穷大阶数,从小到大排序。

n, n-n3+7n5, nlogn, 2n/2, n3, logn, n1/2+logn, (3/2)n, ,n!, n2+logn

【中科院计算所 1995 ( 4 分) 】

logn, n1/2+logn, n, nlogn, n2+logn , n3, n-n3+7n5, 2n/2, (3/2)n, n!,

Page 46: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

分析算法时间复杂度 [ 例 1-3]

void fun(int n)

{

Int i=0;s=0;

While(s<n)

{ ++i;

s=s+i;

}

}

问题规模: n

基本操作 :++i, s=s+i

假设循环执行 m 次结束,则S1=1;

S2=1+2=3

S3=1+2+3=6

Sm=m(m+1)/2

m是执行的次数,需要用 n 表示出来则:n=m(m+1)/2, m=

T(n)=O( )

2

181 n-

n

Page 47: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

练习 :函数调用 为 mergesort(1,n),merge函数的时间复杂度为 O(n),下面函数 mergesort执行的时间复杂度为多少? P 二 .2

Void mergesort(int I, int j){Int m;If(i!=j){m=(i+j)/2;Mergesort(i,m);Mergesort(m+1,j);Merge(i,j,m);}}

问题规模: n

基本操作 merge 时间复杂度为O(n), 基本操作次数为 cn

Mergesort 基本操作次数设为f(n)

F(n)=O(1)n+cnlog2n

T(n)=O(nlog2n)

Page 48: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

空间复杂度

• 程序指令的存储空间• 数据存储空间• 辅助存储空间 数量级的思想 若算法执行时所需要的辅助空间相对于输入数据量而言是个常数,则称这个算法的辅助空间为 O(1) 。

Page 49: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

9. 当你为解决某一问题而选择数据结构时,应从哪些方面考虑?【西安电子北京科技大学 2000 】• 通常考虑算法所需要的存储空间量和算法

所需要的时间量。• 后者又涉及到四方面:1. 程序运行时所需输入的数据总量2. 对源程序进行编译所需时间3. 计算机执行每条指令所需时间4. 程序中指令重复执行的次数。

Page 50: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

算法基础:

1.相关 C 语言基础2.数组3.函数4.结构体5.typedef声明新类型名6.指针7.动态存储分配

Page 51: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

一、数组:作用:同一类型的有序数据的集合,用统一的数组名

和下标来唯一确定数组中的元素一维数组的定义:

类型说明符 数组名 [ 常量表达式 ] ;例: int a[10]; 有从 a[0] 到 a[9] 共 10 个元素

一维数组的引用:数组名 [ 下标 ] 只能逐个引用数组元素而不能一次引用整个数组。例: for(i=0;i<=9;i++) a[i]=i; for(i=9;i>=0;i--) printf(“%d”,a[i]);

• 二维数据的定义:类型说明符 数组名 [常量表达式 ] [常量表达式 ] 例 : int a[3][4]

• 二维数据的引用:数组名 [下标 ][下标 ]

Page 52: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

二、函数将常用的功能模块编写成函数• 函数的定义:

类型标识符 函数名(形式参数列表) {声明部分语句 }

• 函数的调用:函数名(实参列表);

注:1. 通过 retrun 语句获得函数返回值2. 一个明确不带回值的函数 , 用

void 定义数据类型标识符

int max(int a,int b){ if(a>b)return a; else return b;}main(){ int max(int a,int b); int x,y,z; printf("input two numbers:\n"); scanf("%d%d",&x,&y); z=max(x,y); printf("maxmum=%d",z);}

Page 53: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

三、结构体类型作用:将不同类型的数据组合成一个有机的整体以便于引用,这些组合在一个整体中的数据是互相联系的。

结构体类型数据的定义1 、 Struct 结构体名 //直接定义结构体类型变量 { 类型名 1 成员名 1 ; // 成员表列 类型名 2 成员名 2 ; } 变量名列表; // 对类型不分配空间,只对变量分配空间例: struct student { int num; char name[20] } stud1,stud2; 2 、先声明结构体类型,再定义变量名结构体类型名 结构体变量名;如: struct student stud1,stud2;3 、结构体数据类型的引用: 结构体变量名 . 成员名 如 stud1.num

Page 54: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

四、 typedef 声明新的类型名来代替已有的类型名

例 1 : typedef int INTEGER; //指定用 INTEGER 代表 int 类型

例 2 :声明结构体类型: typedef struct { int month;Int day;}DATE; //声明新类型名 DATE ,代表上面指定的一个结构体类型DATE birthday; // 用 DATE这个数据类型名定义变量 birthday

DATE *p // 定义 P 为指向此结构体类型数据的指针[ 注 ] :1. typedef 可以声明名种类型名,但不能定义变量,需单独用

定义的类型名去定义变量。2. typedef仅是对已存在的类型增加一个类型名,没有创造新

的类型。 有利于程序的通用和移植。

Page 55: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

五、指针• 理解重点:辨识指针与指针变量,理解地址与指针

的关系,理解各符号的含义数据在内存中的存储方式:

1. 直接访问:按变量的地址存取变量的值2. 间接访问:把变量的地址放在另一个变量中。3. 指针:一个变量的地址称为该变量的指针。变量的指针就是变量的地址

4. 指针变量:一个变量,专门用来存放另一个变量的地址,即用来存放指针的变量

定义指针变量: 基类型 *指针变量名 // 定义指向基类型的指针变量

例: Int *pointer_1,*pointer_2 // 定义指向整形数据的指针变量 pointer_1 和 2

Page 56: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

五、指针• & :取地址运算符

&a :为变量 a 的地址 pointer_1 = &a ,把变量 a 的地址给 pointer_1

• * :指针运算符 *pointer 为指针 pointer 的值。即 pointer地址里

的值。例:下面两个语句作用相同:

i=3; *i_pointer=3; // 将 3赋给指针变量 i_pointer 所指向的变量。

• 在数组中,数据名指数组首元素的地址。 P= &a[0] 相当于 p=a

Page 57: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

五、指针

例 1 :用来说明指针定义和引用的区别。Main()

{int a,b;

int *pointer_1, *pointer_2; // 定义指针变量a=100;b=10;

pointer_1=&a;pointer_2=&b;

printf(“%d\n”,a,b); printf(“%d,%d\n”,*pointer_1,*pointer_2); } //使用指针

运行结果: 100 , 10 100 , 10

Page 58: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

五、指针例 2 :用指针类型的数据作函数参数。swap(int *p1,int *p2)

{int temp; temp=*p1; *p1=*p2; *p2=temp;}

main()

{ int a,b;int *pointer_1,*pointer_2; scanf("%d,%d",&a,&b);

pointer_1=&a;pointer_2=&b;

if(a<b)

swap(pointer_1,pointer_2);

printf("\n%d,%d\n",a,b); }

Page 59: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

五、指针• 指向结构体类型数据的指针:例: p是指向结构体类型数据的指针变量结构体变量 . 成员名 stud1.num

• 等价于 (*p).num

• 等价于 p->num

Page 60: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

六、强制类型转换 :(类型名)(表达式) • 例: p=(struct student *) stu[0].name

// 将 stu[0].name 的数据类型转换为 struct student 数据类型,再将其地址赋给 P这个指针变量。强制转换为 struct student 的指针类型

Page 61: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

七、处理动态链表所需的函数1. Void * malloc(unsigned int size);

• 作用:在内存的动态存储区中分配一个长度为 size 的连续空间。

• 返回值:返回指向分配域起始地址的指针。如函数未成功执行,则返回空指针。

例:L.elem=(ElemType* )malloc(LIST_INIT_SIZE*sizeof(ElemType));

2 、 Void*calloc(unsigned n, unsigned size);• 作用:内存的动态存储区中分配 n 个长度为 size 的连续空

间。可以为一维数组开辟动态存储空间, n 为数组元素个数,每个元素长度为 size.

3 、 Void * realloc(void *p,unsigned size);4 、 Void free(void *p) 。

Page 62: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

七、处理动态链表所需的函数1. Void * malloc(unsigned int size);

• 作用:在内存的动态存储区中分配一个长度为 size 的连续空间。

2. Void*calloc(unsigned n, unsigned size);• 作用:内存的动态存储区中分配 n 个长度为 size 的连续空

间。可以为一维数组开辟动态存储空间, n 为数组元素个数,每个元素长度为 size.

3. Void * realloc(void *p,unsigned size);• 作用:将 P 所指出的已分配内存区的大小改为 size, size

可以比原来分配的空间大或小例: newbase =(ElemType* )realloc(L.elem,

(L.listsize+LISTINCREMENT)sizeof(ElemType));4 、 Void free(void *p)

• 作用: 释放由 P指向的内存区。

Page 63: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

算法:设计算法的三个阶段1. 从问题出发,寻找可能的解决方案,结合

计算机选择合适的算法:

2. 建立解决问题的数据模型和程序框架,并用伪代码描述一系列步骤

3. 细化程序框架,用程序设计语言写出完整的数据结构和程序代码。

Page 64: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

算法结构的规范描述• 算法描述中主要涉及算法结构、函数参数、条件运算,动态存储分配等主要问题

• 算法结构的规范描述为:<返回类型 > 算法名( <参数表 > ) {// 算法功能说明(用文字描述)变量说明语句;算法执行语句;} ;

Page 65: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

算法分析-设计算法的思路-C语言描述算法的规则及含义Status ListInsert_sq(SqList &L, int i, ElemType e){// 在顺序线性表L中第 i 个位置之前插入新的元素 eIf (L.length>=L.listsize{newbase=(ElemType*)realloc(L.elem,

(L.listsize+Listincrement)*sizeof(ElemType));If(!newbase) exit(overflow);L.elem=newbase;L.listsize+=Listincrement;}q=&(L.elem[i-1]);For(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p;*q=e;++L.length;Retrun OK;}//ListInsert_Sq

算法结构,函数参数,指针,条件运算,动态存储分配

Page 66: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

写算法的思路

1. 算法名 参数 输入2. 算法说明3. 不合法的情况 有穷性4. 解决问题的步骤 确定性,可行性5. 结果 输出

Page 67: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

算法练习 1

• 设计一个算法,将顺序表中的所有元素逆置• 思路:• 前面的元素与后面的元素互换

1. i,j 分别指向第一个和最后一个元素

2. 交换 i,j 所指元素3. i向后移一个位置, j向前移一

个位置4. 直到 i 与 j相遇时结束

Page 68: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

算法练习 2• 设计一个算法,从一给定顺序表 L 中删除从下标 i 到 j之间的元素,

假定 i 和 j都是合法的。

• 思路:• 从第 j+1个元素开始到最后一个元素为止,用这之间的每个元素去覆盖从这个元素开始往 前数第 j-i+1个元素

Void dele(Sqlist &L,int i,int j){int k,l;L=j-i+1;For(k=j+1;k<=L.length;++k){L.data[k-l]=L.data[k];}L.length-=l}

Page 69: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

本 章 小 结

1. 分析算法的时间复杂度

2. C语言描述算法的规则及含义

3. 算法分析

Page 70: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

1. 算法的计算量的大小称为计算的( )。【北京邮电大学 2000 二、 3 ( 2 分)】

A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于( )【中科院计算所 1998 二、 1 ( 2

分)】A.问题的规模 B. 待处理数据的初态 C. A 和 B3. 计算机算法指的是( 1 ),它必须具备( 2 ) 这三个特性。(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度

方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 【南京理工大学 1999 一、 1 ( 2 分) 【武汉交通科技大学 1996

一、 1 ( 4 分)】4 .一个算法应该是( )。【中山大学 1998 二、 1 ( 2 分)】 A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D .

A 和 C. 5. 下面关于算法说法错误的是( )【南京理工大学 2000

一、 1 ( 1.5 分)】A.算法最终必须由计算机程序实现B. 为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的

Page 71: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

考研英语--宾语从句• 在句子中起宾语作用的从句叫做宾语从句 .宾语从句分为三类 :1. 动词的宾语从句 , find,feel,consider,make,believe 2. 介词的宾语从句: except,but,besides 3. 形容词的宾语从句 . sure, glad, happy,sorry,afraid,

surprised

• 时态: 1. 主句用一般现在时,从句可用任意时态。 2. 主句用过去时,从句用过去某个时态。 3. 主句用过去时,从句是真理时,只用一般现在时。

Page 72: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

考研英语-状语从句• 状语从句 ( Adverbial Clause ) 状语从句指句子用作状语时,起副词作用的句子。它可以修饰谓语、非谓语动词、定语、状语或整个句子。

• 根据其作用可分为时间、地点、原因、条件、目的、结果、让步、方式和比较等从句。

• 从句位于句首或句中时通常用逗号与主句隔开,位于句尾时可以不用逗号隔开。

Page 73: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

考研英语• 一、主谓结构,宾语从句,状语从句• 2005年阅读 2 P3S1 :

• Just as on smoking, voices now come from many quarters insisting that the science about global warming is incomplete, that it’s OK to keep pouring fumes into the air until we know for sure.

就像吸烟问题一样,来自各方的声音仍坚持认为,目前关于全球气候变暖的科学还不完善,因此,在我们证实之前,可以继续向大气中排放废气。

Page 74: 学习的目的: 升学?就业?创业?终身学习 心态:想法决定行为,张驰有度 课程要求:学有所得

考研英语• 一、主谓结构,宾语从句,状语从句• 2011年阅读 1 P4S2

• For the time, attention, and money of the art-loving public, classical instrumentalists must compete not only with opera houses, dance troupes, theater companies, and museums, but also with the recorded performances of the great classical musicians of the 20th century.

如今为了获得艺术爱好者的时间、关注和金钱,古典音乐演奏家们不仅要和歌剧院、舞蹈团、剧团和博物馆竞争,而且还需要和那些收录了 20世纪伟大的古典音乐大量作品的唱片竞争。