数据结构绪论课件PPT课件

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

1.1 基本概念
• 数据结构(Data structure):数据之间 的相互关系,包含3个方面的问题: 1。数据元素之间的逻辑关系,即逻 辑结构 2。数据在机内的存储形式,即存储 结构或物理结构。 3 在数据上进行的运算,即对数据 的操作。
1.1 基本概念
– 数据逻辑结构又分为线性结构和 非线性结构。
•小 结 • 习题与练习
第一章 绪论
• 该课程是1968年由美国科学家Knuth首 先提出的,他在《计算机程序设计技巧》 第1卷和第3卷中有详细的描述。它是 计算机专业的基础课程,是程序设计
的基础。
• 瑞士科学家Wirth在其著作中这样描述: 算法+数据结构=程序,由此可见数据 结构的重要性。
1.1 基本概念
线性的:线性表,对列,栈等 非线性的:树,图等
1.1 基本概念
➢数据存储结构有:
顺序存储 链式存储 索引存储 散列存储
1.1 基本概念
• 算法(Algorithm):对特定问题求解 步骤的一种描述。
• 算法是一个有穷的规则序列,这些 规则决定了解决某一特定问题的一
系列运算。
• 由此问题相关的一定输入,计算机 依照这些规则进行计算和处理,经
{ 语句序列
} 类C语言的形参书写比标准C语言简单, 如,int xyz(int a,int b,int c)可以简单写成 int xyz (int a,b,c)
类C与标准C的主要区别(续)
• 2. 局部量的说明可以省略,必要时对其
作用给予注释 。
• 3. 不含go to语句,增加一个出错处理语
句error(字符串),其功能是终止算法
1.4 应用举例与分析
• 例1.1:计算下面交换i和j内容程序段 的时间复杂性。
temp=i; i=j; j=temp; • 解:以上三条单个语句均执行1次, 该程序段的执行时间是一个与问题
n无关的常数,因此,算法的时间复 杂度为常数阶,记作T(n)=O(1).
数据结构
第一章 绪论
第一章 绪论
• 知识点
– 数据结构中常用的基本概念和术语 – 算法描述和分析方法
• 难点
– 算法复杂性的分析方法
• 要求
– 了解数据的逻辑结构和物理结构,算法的 基本概念,它们对于程序设计的重要性以及 相互关系
– 掌握算法复杂性的概念及分析方法
第一章目录 • 1.1 基本概念 • 1.2 算法的设计描述 • 1.3 算法的性能分析 • 1.4 应用举例及分析
过有限的计算步骤后能得到一定的
输出。
返回
1.2 算法的设计与描述
•算法的定义 算法是对特定问题求解的一种描述,是有
穷的规则序列,这些规则决定了解决该问题的
一系列运算,是指令的有穷序列。
例:算法E(欧几里得算法):给定两个正整 数M和N,求它们的最大公因子,即能同时整 除M和N的最大正整数。 E1:[求余数]以N除M,并令R为所得的余数。 E2:[余数为0?]若R=0,则算法结束,N即为答案。 E3: [互换]置M ← N,N←R,并返回E1。
1.2 算法的设计与描述
一个算法有下列重要的特性:
• 有穷性 • 确定性 • 可行性 • 输入 • 输出
1.2 算法的设计与描述
• 本书将采用类C语言描述算法 • 类C语言是标准C语言的简化 ,与标准C
语言的主要区别如下:
– 1. 所有算法都以如下所示的函数形式表示: 函数类型 函数名(参数表)
• 例1:计算机管理图书目录问题。
1.1 基本概念
• 数据(Data):一切能够由计算机接受 和处理的对象。
• 数据元素(Data element):是数据的 基本单位,在程序中作为一个整体
加以考虑和处理。
• 数据项(Data item):是数据的不可分 割的最小单位,在有些场合下,数据
项又称为字段或域。
1.3.2 算法复杂性的分析
• 算法的复杂性包括时间复杂性(所需运 算时间源自文库和空间复杂性(所占存储空 间),重点是时间复杂性 。
• 一个算法所需的运算时间通常与所解决 问题的规模大小有关。
• 用n 表示问题规模的量 ,把算法运行所 需的时间T表示为n的函数,记为T(n)。
• 不同的T(n)算法,当n增长时,运算时间 增长的快慢很不相同。
• 一个算法所需的执行时间就是该算法 中所有语句执行次数之和。
• 渐进时间复杂性:当n逐渐增大时T(n) 的极限情况,一般简称为时间复杂性。
• 时间复杂性常用数量级的形式来表示, 记作T(n)=O(f(n))。 其中,大写字母O为Order(数量级)
的字头,f(n)为函数形式,如T(n)=O(n2)。
• 当T(n)为多项式时,可只取其最高次 幂项,且它的系数也可略去不写。
• 一般地,对于足够大的n,常用的时 间复杂性存在以下顺序:
O(1)< O(logn)< O(n)< O(n*logn)< O(n2)< O(n3)…<O(2n)<O(3n)<…<O(n!)
其中,O(1)为常数数量级,即算法的 时间复杂性与输入规模n无关。
的执行并给出表示出错信息的字符串。
• 4. 输入/输出语句有:
– 输入语句 scanf([格式串]),变量1,…,变量N);
– 输出语句 printf([格式串]),变量1,…,变量N);
通常省略格式串 。
返回
1.3 算法的性能分析
• 正确性:算法应能正确地实现处理要求 。 • 易读性:有助于对算法的理解,便于纠
• 算法的运行时间往往还与具体输入的数 据有关,通常用以下两种方法来确定一 个算法的运算时间:
• 1. 平均时间复杂性:研究同样的n值时各 种可能的输入,取它们运算时间的平均 值。
• 2. 最坏时间复杂性:研究各种输入中运 算最慢的一种情况下的运算时间。
返回
1.3.2 算法复杂性的分析
• 空间复杂度的计算 一维数组a[n]:空间复杂度为o(n) 二维数组a[m][n]:空间复杂度为 o(m*n)
正和扩充 。 • 简单性:使证明其正确性比较容易,对
算法进行修改也比较方便。 • 高效率:达到所需的时、空性能。
1.3.1 评价算法的一般原则
• 正确性:算法应能正确地实现处理要求 。 • 易读性:有助于对算法的理解,便于纠
正和扩充 。 • 简单性:使证明其正确性比较容易,对
算法进行修改也比较方便。 • 高效率:达到所需的时、空性能。
相关文档
最新文档