作业 考核方式 书面作业:每个单元3-5个题,树、图和查找单元5-10个题。 上机作业:从第三周起每周一次 , 大约14次

Slides:



Advertisements
Similar presentations
第一讲:导论 The Introduction  哲学与中国哲学  哲学与哲学史  中国哲学史的历史.
Advertisements

为什么爸爸妈 妈是双眼皮, 我是单眼皮? 为什么为什么? 555…. 1 、举例说出相对性状和基因的关系。 3 、理解近亲结婚的危害。 2 、 能够描述控制相对性状的一对基因的 传递特点。
融合遗传: 两个亲本杂交后,子代 会表现出介于双亲之间 的性状。 生物体的形态结构和 生理特征叫做性状。 同一种生物的同一种性状的 不同表现类型 。 相对性状:
商管群科科主任 盧錦春 年 3 月份初階建置、 4 月份進階建置、 5 月份試賣與對外營業。
第 5 章 中國的都市.
抗菌药物合理用药指标 2011年11月24日.
Course 1 演算法: 效率、分析與量級 Algorithms: Efficiency, Analysis, and Order
基本概論 Basic concepts.
解析几何 空间直角坐标系 阜宁县东沟中学高一数学组.
学习情境三 桥梁下部结构的构造与施工 桥梁墩台的构造.
牛 汉 ——《华南虎》 …… 恍惚之中听见一声 石破天惊的咆哮, 有一个不羁的灵魂 掠过我的头顶 腾空而去, 我看见了火焰般的斑纹
牛 汉 …… 恍惚之中听见一声 石破天惊的咆哮, 有一个不羁的灵魂 掠过我的头顶 腾空而去, 我看见了火焰似的斑纹 火焰似的眼睛,
数据结构 杨鹏宇 QQ: 版权所有,转载或翻印必究
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
Introduction 基本概念 授課老師:蕭志明
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
温州大学 彭小明 教授 电话:0577— 中学语文教学法 温州大学 彭小明 教授 电话:0577—
抗菌药物临床应用管理规定.
中五級中史科及通識科跨科研習 研習大澳的「宗教文化」─ 廟宇的研習 指導老師:周婉儀老師 組員: 陳偉欽 5a (15)
引導者的角色 組別:第5組 4A1I0003 劉芷媛 4A1I0004 陳安琪 4A1I0014 陳佳瑩 4A1I0046 葉倢茹
数据结构 第一章 绪论.
古典家具鉴赏 主讲-刘娜.
第八章 信息系统开发概述.
您買美元了嗎? 退休規劃 全球外幣保單.
数据结构(C语言版) Data Structure
古文閱讀 – 像虎伏獸 明 劉基 組員: 5號江依倫 6號江若薇 12號張珉芫 32號蔡燕如.
Performance Evaluation
钞坑安置区项目简介.
“深入推进依法行政加快建设法治政府” -《法治政府建设实施纲要》解读
学生培养的过程性评价.
第六节 可降阶的二阶微分方程 一、 型的微分方程 二、 型的微分方程 三、 型的微分方程.
走出人生的冰原 勇敢迎向挑戰.
第五章 预测分析 学习目标:掌握定性和定量两类预测分析方法的特征;熟练掌握平滑指数法和修正的时间序列回归法的应用;重点掌握目标利润的预测方法。熟悉成本预测和资金需用量预测的主要方法;了解预测分析的概念、特点、基本程序及其主要内容;一般了解销售预测的各种方法的特点及其适用范围 重、难点:1、销售的定量分析.
1.5楼梯与雨篷 1.5.1楼梯   板式楼梯(最常见)、梁式楼梯、   (螺旋楼梯、悬挑楼梯) 楼梯的结构设计步骤:
孟德尔的豌豆杂交实验(一) 豌豆杂交实验为什么这么成功? 豌豆是自花传粉、闭花受粉植物; 人工异花传粉 有易于区分的性状。
遗传的基本规律 (一)基因的分离规律.
数据结构与算法 数据结构与算法实验
國語文好點子趴辣客教學食譜 甜點:〈焦糖鳥布蕾〉
湖南农业大学农业航空团队研究成果 航空作业机型 湖南农业大学农业航空研究中心 成果专栏 ◎团队简介
佇列 (Queue).
第 1 章 演算法分析.
新世纪计算机专业系列教材 数据结构 C++实现 第一章 缪淮扣 顾训穰 沈 俊 编著 科 学 出 版 社.
哈夫曼编码.
STRUCTURE 授課:ANT 日期:2010/5/12.
1.1 数据结构讨论的范畴 1.2 基本概念 1.3 算法和算法的量度.
第 六 章 鏈結串列(Link List) 課程名稱:資料結構 授課老師:________ 2019/1/2.
樹 2 Michael Tsai 2013/3/26.
共有六個運算性質 包括它的證明以及相關題型
鄧姚文 資料結構 第一章:基本概念 鄧姚文
Week 2: 程式設計概念與 演算法的效能評估
OOP6 結構Struct 黃兆武.
Total Review of Data Structures
第1章 绪论 2019/4/16.
计算机算法基础 周中成 苏州科技学院应用数学系 2019/4/18.
第1章 绪论 北京师范大学 教育技术学院 杨开城.
数 据 结 构 与 算 法.
學這些有什麼好處呢? 為了把資料作更客觀之總結描述或比較多組資料。總而言之,就是要找出一個數能代表整組數據。
第1章 绪论(二) 教学目标 理解算法的特性及评价标准 掌握算法时间复杂度和空间复杂度的分析方法 1/
演算法時間複雜度 (The Complexity of Algorithms)
高山草原生態系 分布於臺灣3000公尺以上高山,如中央山脈.玉山山脈.雪山山脈 分為玉山箭竹草原,高山芒草原及兩者混生林三種
資料結構簡介 綠園.
演算法的效率分析.
演算法分析 (Analyzing Algorithms)
第二章 基本数据类型 ——数据的表示.
第7章 概率算法 欢迎辞.
數學遊戲二 大象轉彎.
13.2 物质波 不确定关系 微观粒子的波粒二象 + ? 德布罗意假设(1924年): 实物粒子具有波粒二象性。 波长 频率
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
函式庫補充資料 1.
105-1 Data Structure Homework 4
Presentation transcript:

作业 考核方式 书面作业:每个单元3-5个题,树、图和查找单元5-10个题。 上机作业:从第三周起每周一次 , 大约14次 总成绩=出勤占5%+书面和上机作业占(25%~30%)+期末考试成绩占(65%~70%)

算法与数据结构 Algorithms and Data Structures

教 材 数据结构(C语言版) 严蔚敏 吴伟民 编著 清华大学出版社

参考书目 1.《数据结构与算法分析》张铭、刘晓丹译 电子工业出版社 2.《数据结构—用面向对象方法与C++描述》 殷人昆著 清华大学出版社 3.《Computer Algorithms – Introduction to Design and Analysis 》Sara baase 高等教育出版社影印 4. 《Data Structures and Algorithms》 Alfred V. Aho 5. 《数据结构》许卓群 著,高等教育出版社 6. 网上阅读材料 7. 《数据结构习题集》 严蔚敏 吴伟民著

第一章 概述 1.1 数据结构的发展过程 1.2 什么是数据结构 1.3 数据的逻辑结构 1.4 抽象数据类型 1.5 数据的存储结构 第一章 概述 1.1 数据结构的发展过程 1.2 什么是数据结构 1.3 数据的逻辑结构 1.4 抽象数据类型 1.5 数据的存储结构 1.6 算法与算法分析 1.7 ADT的表示与实现间的问题

1.1 数据结构的发展过程 如:弹道计算<v0 ,α, …> 矩阵运算 M1* M2*M3… 函数计算 y=f(x) 方程组求解 1.1 数据结构的发展过程 早期:计算机主要用于数值计算. 如:弹道计算<v0 ,α, …> 矩阵运算 M1* M2*M3… 函数计算 y=f(x) 方程组求解 定积分:

定积分:牛顿插值法:

1.1 数据结构的发展过程 早期数据的特点: 数据量少,计算比较复杂,当时人们只注重求解方法,并不注重数据的组织 . 1.1 数据结构的发展过程 早期数据的特点: 数据量少,计算比较复杂,当时人们只注重求解方法,并不注重数据的组织 . 在这一阶段,《数据结构》还未形成一门系统的学科,而是零星地分布在程序设计、图论、集合、代数、操作系统和编译原理等课程中。

1.1 数据结构的发展过程 中期:70’s-80’s 非数值数据猛增 70’s 80’s 90’s

1.1 数据结构的发展过程 非数值数据的特点: 数据量大,计算比较简单,关系复杂,此时人们不得不把注意力集中于分析数据间的关系、数据的组织形式和数据的表示方法。 70年代中期《数据结构》形成了一门课程。 这一阶段,程序设计以数据为中心,数据库技术得到了飞速发展。

1.1 数据结构的发展过程 目前:计算机应用领域不断扩大,信息量越来越大, 问题越来越复杂。 如:声音和图象信息处理 1.1 数据结构的发展过程 目前:计算机应用领域不断扩大,信息量越来越大, 问题越来越复杂。 如:声音和图象信息处理 它们的特点是数据量空前庞大 关系异常复杂 不仅要注重求解方法而且要注重数据间的关系, 两者不可偏废一者。

1.1 数据结构的发展过程 因此可以说,数据结构是计算机的产物,是计算机 科学中一门综合性的专业基础课.它的研究不仅涉及 1.1 数据结构的发展过程 因此可以说,数据结构是计算机的产物,是计算机 科学中一门综合性的专业基础课.它的研究不仅涉及 到计算机硬件的研究范围,而且和计算机软件的研 究有着密切的关系,它也是os、编译原理、数据库 等课程的基础。

课 程 介 绍 算法与数据结构 涉及的领域: 相关的课程 程序设计 操作系统 编译原理 数据库 … 是专业核心课 ! 数学 代数系统 硬件 数学 代数系统 硬件 存储装置 系统设计 软件 文件系统 数据组织 信息检索 编码理论 算子关系 数据类型 数据表示 数据运算 数据结构 数据存储 机器组织

1.2 什么是数据结构 例1.1 6845678是谁的电话? 太难找了! 电话号码本1 党政机关 党政机关 党政机关 党政机关 大专院校 1.2 什么是数据结构 例1.1 6845678是谁的电话? 太难找了! 电话号码本1 党政机关 党委总机 4811122 宣传部 4811234 组织部 4812345 大专院校 内蒙古大学 校务办公室 4991234 计算机学院 4992930 党政机关 党委总机 4811122 宣传部 4811234 组织部 4812345 大专院校 内蒙古大学 校务办公室 4991234 计算机学院 4992930 党政机关 党委总机 4811122 宣传部 4811234 组织部 4812345 大专院校 内蒙古大学 校务办公室 4991234 计算机学院 4992930 党政机关 党委总机 4811122 宣传部 4811234 组织部 4812345 大专院校 内蒙古大学 校务办公室 4991234 计算机学院 4992930

1.2 什么是数据结构 电话号码结构: 单位=>电话号码

6845678是老朋友Tom的电话? 太容易找了! 电话号码本2 党政机关 大专院校 党政机关 大专院校 党政机关 大专院校 党委总机 4811122 宣传部 4811234 组织部 4812345 大专院校 内蒙古大学 校务办公室 4991234 计算机学院 4992930 党政机关 党委总机 4811122 宣传部 4811234 组织部 4812345 大专院校 内蒙古大学 校务办公室 4991234 计算机学院 4992930 党政机关 党委总机 4811122 宣传部 4811234 组织部 4812345 大专院校 内蒙古大学 校务办公室 4991234 计算机学院 4992930 110 ……...匪警 119………火警 121………急救 1234567…. ……. 6845678….Tom ……… 按电话号码的大小排列 数据的安排直接影响到工作效率。

假设要在n个城市之间建立通信联络网,如何在最节省经费的前提下建立这个通信网? 例1.2 假设要在n个城市之间建立通信联络网,如何在最节省经费的前提下建立这个通信网? 28 1 2 3 4 5 6 7 10 16 14 18 12 25 24 22

数据结构的概念: 数据结构研究的对象包括三个方面: 数据的逻辑结构 指数据之间的逻辑关系,即指数据元素之间的关联方式或 邻接关系。 数据的存储结构 指数据在计算机中的存储方式。 运算 定义在该结构上的一组操作, 如输入/读取、检索/查找、插入、删除、更新等。

数据结构的基本概念与术语: 数据(Data): 可被计算机表示、存储和加工处理的所有信息。 数据元素(Data Element): 数据的基本单位,相对独立,通常作为一个整体看待。 例1.3 学生健康情况登记表如下: 姓 名 学 号 性 别 年龄 健康情况 王小林 790631 男 18 健康 陈 红 790632 女 20 一般 刘建平 790633 21 张立立 790634 17 神经衰弱 …….. ……. 每一行是一个数据元素,每一列是一个数据项,学生数据元素的集合是一个数据对象

数据结构的基本概念与术语: 数据项(Data Item): 组成数据元素的不可分割的最小单位。 如:学号,姓名,年龄… 数据对象(Data Object): 性质相同的数据元素的集合。 如 整数数据对象:包括{0,+1, +2, +3,…, +n,…,} 字母数据对象:包括{‘A’,’B’,…’Z’,’a’,’b’,…,’z’}

数据结构的基本概念与术语: 数据类型(Data Type): 用于刻划数据对象的类型。 一个值的集合以及定义在该值的集合上的一组操作的总称. 空类型 整型 实型 字符型 枚举型 指针型 基本类型 在C语言中,数据类型 数组型 结构型 共用体 结构类型

数据结构(Data Structure): 数据结构的基本概念与术语: 数据结构(Data Structure): 数据结构 逻辑结构 存储结构 运算的集合 按某种逻辑关系组织起来的一批数据,按一定的存 储表示方式把它们存储在计算机的存储器中,并在这些 数据上定义了一个运算的集合,就称为一个数据结构. 相互之间存在一种或多种特定关系的数据元素的集合.

1.3 数据的逻辑结构(Logical Structure) 根据数据元素间的不同特性, 通常有以下4种基本逻辑结构: 1. 线性结构 逻辑结构 2 . 集合 非线性结构 3. 树形结构 4 . 图型或网状结构 数据元素间的逻辑结构可形式描述为: DS=(D,S) 其中:D 是数据元素的有限集合;    S是 D上的有限关系集合;

1.3 数据的逻辑结构(Logical Structure) 线性结构(Linear Structure):LS=(D, {R}) D={d1,d2,…, dn} R={<di,di+1>| i=1,2,3,…, n-1} 例1.4 DS=(D, {R}) D={d1, d2, d3, d4,d5,d6 ,d7} R={< d1, d2 >, < d2, d3 >, < d3, d4 >, < d4, d5 >, < d5, d6 >, < d6, d7 >} d1 d2 d3 d4 d5 d6 d7 线性结构

线性结构 线性结构特点: 一对一的关系 在非空的线性表中: 1)有且仅有一个开始结点d1,它没有直接前趋. 2)有且仅有一个终端结点dn,它没有直接后继. 3)其余的内部结点di(2in-1)都有且仅有一个 直接前趋di-1和一个直接后继di+1。 d1 d2 d3 d4 d5 d6 d7 线性结构

集合: 例1.5 DS=(D, {R}) D={d1, d2, d3, d4,d5,d6 ,d7} d1 D , d2 D , d3 D , d4 D , d5 D , d6 D , d7 D d1 d2 d3 d4 d5 d6 d7 集合 集合特点: 结构中的数据元素只具有 “同属于一个集合”的关系

树形结构 例1.6 DS=(D, S={R}) D={d1, d2, d3, d4 ,d5,d6,d7} R={< d1, d2 >, < d1, d3 >, < d2, d4 >, < d2, d5 >,< d2, d6 >, < d3, d7 >} 开始结点:无前驱的结点, 如d1 d4 d1 d2 d3 d5 d6 d7 树形结构 终端结点: 无后继的结点, 如d4,d5,d6,d7 树形结构的特点: 结构中的数据元素存在一对多的关系

< d2, d3 >, < d3, d5 >, < d4, d5 >} 图型或网状结构 例1.7 DS=(D, {R}) D={d1, d2, d3, d4,d5} R={< d1, d2 >, < d1, d3 >, < d1, d4 >, < d1, d5 >, < d2, d3 >, < d3, d5 >, < d4, d5 >} d1 d2 d3 d4 d5 图型结构 图型结构的特点: 结构中的数据元素存在多对多的关系

1.4 抽象数据类型(Abstract Data Type 简称 ADT) 抽象数据类型: (1) 数学模型 (2) 定义在该模型上的一组操作 数据类型和抽象数据类型的区别: 数据类型仅局限于计算机中定义并实现的数据类型,而抽象 数据类型还包括用户在设计软件系统时自己定义的数据类型. 抽象数据类型是 面向对象技术核心概念; 面向对象程序设计的基础(C++,Java, VB,….); 抽象层次高,模块复用度高; 使用ADT有极大的优势

ADT的描述格式: ADT ADT-name { 数据对象: <数据对象定义> 数据关系: <数据关系定义> 数据对象: <数据对象定义> 数据关系: <数据关系定义> 基本操作: <基本操作定义> } ADT ADT-name 基本操作的定义: 基本操作名(参数表) 初始条件:<初始条件描述> 操作结果:<操作结果描述>

例1.8 抽象数据类型复数的定义 ADT Complex { 数据对象: D={C1,C2| C1,C2 R} 例1.8 抽象数据类型复数的定义 ADT Complex { 数据对象: D={C1,C2| C1,C2 R} 数据关系: S={< C1,C2 >| C1,C2 D} 基本操作: Create(x,y,&z) 初始条件: 已知两个实数x,y 操作结果: 生成一个复数z=x+iy Add(z1,z2,&sum) 初始条件: 已知两个复数z1=x1+iy1, z2=x2+iy2 操作结果: 得到z1和 z2两个复数的和 sum=(x1 +x2)+i(y1+y2)

例1.8 抽象数据类型复数的定义 Subtract (z1,z2,&dif) 初始条件:已知两个复数z1=x1+iy1, z2=x2+iy2 例1.8 抽象数据类型复数的定义 Subtract (z1,z2,&dif) 初始条件:已知两个复数z1=x1+iy1, z2=x2+iy2 操作结果: 得到z1和 z2两个复数的差 dif=(x1 -x2)+i(y1- y2) Multiply(z1,z2,&pro) 操作结果: 得到z1和 z2两个复数的积 pro=(x1. x2 - y1.y2 )+i(x1. y2+ x2 .y1) Get_Realpart(z) 初始条件:已知复数z=x+iy 操作结果: 得到复数z的实部x Get_Imagpart(z) 操作结果: 得到复数z的虚部y }ADT Complex

1.5 数据的存储结构(Store Structure) 存储结构: MS=(D,M) 其中: D 是数据元素的有限集合;     M是存储器的地址集合; D={di| i=1,2,3,…n} M={0,1,2,3,…,n-1} d1 d2 d3 d4 .. dn-1 dn 1 2 3 存储结构 顺序存储结构 链式存储结构 n-1 MS: D M

1.5 数据的存储结构(Store Structure) 顺序存储结构(Sequential Structure) 例1.9 LS={D,{R}} D={a,b,c,d,e} R={<a,b>,<b,c>,<c,d>,<d,e>} a b c d e 1024 1025 1026 1027 1028 逻辑结构上相邻的两个元素在物理位置上也相邻 数据元素的存储位置 a b c d e 线性结构

数据元素的存储位置 e NULL b 1040 a 1026 d 1024 c 1034 1024 1026 1028 1030 1032 1034 1036 1038 1040 存储空间不一定连续 保持了逻辑关系 LS 链式存储结构(Linked Structure) 例1.10 LS={D,{R}} D={a,b,c,d,e} R={<a,b>,<b,c>,<c,d>,<d,e>} 数据元素 指针 结点(node):存储一个数据元素及附加信息的存储空间 指针(pointer):存储地址 不考虑具体地址,抽象为: a b c d e ^ LS

1.6 算法与算法分析 算法(Algorithms): 是对具体问题求解步骤的一种描 述, 是指令的有限序列。 算法有五个特点: 1.6 算法与算法分析 算法(Algorithms): 是对具体问题求解步骤的一种描 述, 是指令的有限序列。 算法有五个特点: 有穷性:执行有限步骤后终止,每步都在有限时间完成。 确定性:指令有确切含义,无二义性。 可行性:指方法对, 即算法中所描述的操作都是可以通过已经 实现的基本运算执行有限次来完成. 输入: 有0个或多个输入数据。 输出: 至少有1个输出数据。

算法分析的目的: 评价算法“好坏”的几个标准: 对算法作出一个客观的评价; 比较算法,选择算法; 改进算法; 通常有以下五个标准,但这不是绝对的。 正确性(Correctness) 时间工作量(Amount of work done) 空间占用量(Amount of space used) 简单性和清晰性(Simplicity, Clarity) 最优性(Optimality)

1. 正确性: 对任一个合法的输入,算法结束后得到正确结果。 求解问题方法的正确性 由问题领域的理论和定理保证和证明。 如高斯迭代法,其正确性是由线性代数的理论证明。 程序的正确性 是通过软件测试来定,但测试无法保证程序是绝对正的。

2. 时间工作量: 算法的效率越高,工作量就越少,执行时间越短。 我们不能用日常生活中的时间来度量。 它指的是算法的工作量。 在算法中时间的单位指的是算法中的基本运算。 对不同的问题,其求解算法的基本运算是不同的。 例如: 问题 基本运算 在数组中查找元素X 元素比较 两实数矩阵相乘 乘 排序 元素比较,移动 求多项式P(x)的值 加、乘 循环 循环体

2. 时间工作量 算法所做工作量也称“时间复杂度(Time Complexity)” 影响算法时间代价的因素: 依赖于输入规模(元素个数),是输入尺寸的函数f(n),用T(n)表示,T(n)=f(n), n是输入尺寸。 如何衡量问题的输入尺寸 ? 因问题而异 例如: 问题 输入尺寸 在数组中查找元素X 元素个数 两实数矩阵相乘 阶数 排序 元素个数 求多项式P(x)的值 阶数

影响算法时间代价的因素: (2) 与算法本身有关: 例1.11 求多项式P(x) =p0+p1x+p2x2+p3x3+…+pnxn的值 算法1 按一般理解,需做 次乘法,n次加法 算法2 P(x) =(…(((pnx+pn-1)x+pn-2)x+pn-3)x+…+p1)x+p0 则只需做n次乘法,n次加法

影响算法时间代价的因素: (3) 与输入有关 例如 在查找中,若输入的数据杂乱无章,则在查找中只能从头 到尾顺序比较;若输入的数据已排序,则可采用折半查找, 减少时间. (4) 与机器有关 不作为重要因素 (5) 与设计者有关

时间复杂度 最坏情况下时间复杂度(Worst-case Complexity): Dn 是问题的所有尺寸为n的输入集, I 是 Dn 的元素, t(I)是算法对输入I 所做工作量 用W(n)=max{t(I)| I属于Dn} 表示 最坏情况下时间复杂度

例1.12 在n个数a0,a1,…,an-1中找K。 算法思想:K依次和a0,a1,…,an-1比较,直到找到K或全部比较完. 算法: int seqSearch(int [ ] E, int n, int K) { ans=-1; for (i=0; i<n; i++) if (K==E[i]) { ans=i; break } // return ans; } //end of seqSearch() 基本操作:两元素比较. 最坏情况分析:K在最末尾或无K. W(n)=n

时间复杂度 平均情况下时间复杂度(Average Complexity): Pr(I)是输入I出现的概率, t(I)是算法对输入I所做工作量 则: 表示平均情况下时间复杂度

平均情况分析: 例1.12 设K在E中出现的概率是p,则K不在E中出现的概率是(1-p), 设K在任一位置的概率是相等的(K在E中时) 是:Pr(Ii)=p/n 显然 t(Ii)=i+1 所以: 当p=1时

例1.13 两矩阵相乘 算法: Void matMult(A,B,&C,m,n,p) { for (i=0; i<m; i++) 例1.13 两矩阵相乘 算法: Void matMult(A,B,&C,m,n,p) { for (i=0; i<m; i++) for (j=0; j<p; j++) { C[i,j]=0; for (k=0; k<n; k++) C[i,j]+=A[i,k]*B[k,j] } 分析: W(n,m,p)=A(m,n,p)=nmp 我们经常用最坏情况下时间复杂度来描述算法的好坏。

3. 空间占用量(Space Used): 算法执行中占用的存储空间。 通常我们只分析额外的占用空间量 (除了程序和输入占用的之外) 它和T(n) 一样是输入规模n的函数 用S(n)表示 也分最坏情况和平均情况

4. 简单性和清晰性(Simplicity, Clarity) 简单的算法 易于验证正确性 易于实现(编写程序) 易于调试、修改 5. 最优性(Optimality)(略):

复杂度的表示: 表示算法的增长率: 分析算法的复杂度是为了比较算法,那么T(n)和 S(n) 精确到什么程度为好? 大O(Big-Oh)

算法的描述: 对算法可以在不同的抽象层次上进行描述; 基于数学模型 基于逻辑结构 基于存储结构 描述语言可以是: 自然语言; 形式化语言; 类似高级语言 高级语言; 本课程对算法的描述主要是基于存储 结构这个层次上; 语言采用类C语言,它的特点是: 忽略一些烦琐的语法细节; 表达式用习惯方式书写表达式; 个别时候使用少量的自然语言;

1.7 ADT的表示与实现间的问题 1个数学模型可用多个不同的逻辑结构表示; 逻辑结构是对数学模型的实现; ADT ADTname 数学模型 操作1 操作2 ….. 操作k ADT ADTname 逻辑结构 算法1 算法2 ….. 算法k class ADTname 存储结构 函数1 函数2 ….. 函数k 1 n 1 n 1个数学模型可用多个不同的逻辑结构表示; 逻辑结构是对数学模型的实现; 1个逻辑结构可有多种不同的存储结构; 存储结构是对逻辑结构实现; 算法是基于逻辑结构对操作的实现;

函数是基于存储结构对算法的实现,是程序; 逻辑结构直接影响到算法的效率,如例1.1中电话号码簿。 有时存储结构会影响到算法的基本操作及算法的实现,从 而影响到算法的效率。 设计与选择合理相互吻合的 逻辑结构、存储结构与算法 是十分重要的问题,也是我 们学习本课程的目的之一。 110 112 … 按行政机构排列 找64207655 是谁的 按号码大小构排列 逻辑 结构 存储 结构 算法

学习《算法与数据结构》的目的 好的 程序 好的解决 问题的方案 支持 设计选择好的数据逻辑结构 设计选择好的数据存储结构 设计选择好的算法 开发 好的 程序

本章小结 1、数据结构的定义 2、逻辑结构 3、ADT 4、存储结构以及与逻辑结构的关系 5、算法基本分析技术 6、学习数据结构的目的