计算机软件技术之算法基础和数据结构基础

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

例: 开始
S=0
i=1
否 i<=99
是 S=S+i
i=i+2
输出S 结束
图6 计算1+3+5+7+...+99的当型循环
计算机基础科学系
1.2算法的三种基本结构
循环
计算机基础科学系
循环体 是
条件 否
图7 直到型循环
例:
开始 S=0
i=1
S=S+i
i=i+2

i>99?

输出S
结束
图8 计算1+3+5+7+...+99的直到型循环
顺序
分支
循环
顺序结构是指按
程序语句行的编 写顺序,逐条执 行。
分支结构包括简单 分支与选择分支结 构。选择分支结构 可以根据设定的条 件,判断应该选择 哪一条分支来执行 。
循环结构是指按照一定的条件反复执 行某一或某些处理步骤的结构。
有两种循环语句:一种是先判断条 件再执行循环体的结构称为当型循 环结构;另一种是先执行循环体后 判断条件的结构称为直到型循环结 构。
数据
构反映成分数据在计算机内部的存储安排,它是数据结构的实现形式。 数据结构作为一门学科,研究的内容主要包括数据的逻辑结构、数据 的物理存储结构及对数据的操作(或算法)数三据个项 方面。
计算机基础科学系
2.1线性列表
线性表是一个含有n≥0个结点(数据元素)的有限序列,其中的结点,有
且仅有一个开始结点和一个终端结点,其他结点有且仅有一个前驱和一个 后继结点。
❖二叉树的五种基本形态
左右子树均非空
计算机基础科学系
2.4树
3.二叉树的性质 性质1:二叉树的第i层上至多有2 i-1(i 1)个结点。
证明:根据二叉树的特点,结论是显然的。(用归纳法证明)。
性质2:深度为H的二叉树中至多2H-1个结点。 性质3:具有n个结点的二叉树的最小高度H为[log2n]+1。
其它同理。
计算机基础科学系
1.3常见算法介绍
(3)插入排序 插入排序是最常用的排序技术之一,经常在扑克牌游戏中使用。游戏人
员将每张拿到的牌插入到手中合适的位置,以便手中的牌以一定的顺序排 列。
计算机基础科学系
⑴顺序查找
1.3常见算法介绍
2.查找算法
计算机基础科学系
1.3常见算法介绍
⑵折半查找
计算机基础科学系
计算机基础科学系
1.1 算法的概念
算法的每一种运
算有确定的意 义,执行何种 动作无二义性,
目的明确。
确定性
有穷性 算法的特征
算法中的每个步骤都能在有 限时间内完成。
有输入
计算机基础科学系
可行性
有输出
算法中的所有运算都是基本的,都可以通 过基本运算有限次实现之。
1.1 算法的概念
算法的复杂度
时间复杂度 是指算法需要消 耗的时间资源。
图1 算法c=a+b的流程图
1.2算法的三种基本结构
分支
否 条件
是 语句组1
图2 简单分支
是 语句组1
否 条件
语句组2
图3 选择分支
例:
开始
输入a、b的值是否来自a>b吗?输出a、b
输出b、a
结束
图4 把两个数由大到小输出的算法描述
计算机基础科学系
1.2算法的三种基本结构
循环
否 条件
是 循环体
图5 当型循环
计算机基础科学系
2.4树
(4)二叉树的遍历
(1)前序遍历 (NLR)
(2)中序遍历 (LNR)
(3)后序遍历 (LRN)
访问根结点 按照前序遍历顺序访问根结点的左子树按照前序 遍历顺序访问根结点的右子树
按中序遍历顺序访问根结点的左子树 访问根结点 按中序遍历顺序访问根结点的右子树
按后序遍历顺序访问根结点的左子树
计算机基础科学系
1.2算法的三种基本结构
起止框
圆角矩形用于算法的起止
输入/输出框
平行四边形用于描述算法的输入与输出
处理框 矩形用于算法数据的处理
条件框
棱形框用于算法的判断
有向箭头用于算法的流程指标
计算机基础科学系
1.2算法的三种基本结构
顺序
开始
输 入 a、b 的 值
c=a+b
输出c 的值
结束
计算机基础科学系
1.3常见算法介绍
3.递归算法
计算机基础科学系
2.数据结构基础
数据结构是在整个计算机科学与技术领域上被广泛使用的术语,
数据元素
它被用来反映一个数据的内部构成,即一个数据由哪些成分数据构成, 以什么方式构成,呈什么结构。数据结构有逻辑结构和物理结构之分。 逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结
线性表可分为广义线性表与限制线性表。 广义线性表:可以在任何位置插入与删除数据; 限制线性表:只能在列表两端增加与删除数据,如堆栈,队列
计算机基础科学系
2.2堆栈
堆栈是一种执行“后进先出”算法的数据结构。
栈的操作有很多,基本操作有: 入栈,出栈和空三种。
计算机基础科学系
图9 入栈操作
图10 出栈操作
❖ 选择排序、冒泡排序与插入排序时当今计算机科 学中使用的快速排序的基础。
❖ 二叉树是每个结点最多有两个子树的有序树。
计算机基础科学系
2.3队列
队列只允许在数据表的前端进行删除操作,而在数据列表的后端进行插入操作。
计算机基础科学系
图11 计算机队列
2.3队列
队列的操作也很多,基本操作有:入列、出列和空三种
图12 入列操作 计算机基础科学系
图13 出列操作
2.4树
根结点
父结点 子结点
计算机基础科学系
树的高(深)度
树的基本概念
叶子结点
兄弟
结点的度
二叉树
2.4树
B的子孙为
E、F、J、K
B,C,D互为兄弟
A
B
C
D
E
F GH I
JK
L
A: 是根结点,同时是B、C、D结点的 父结点或双亲结点
B: 是E、F的父结点,E、F是B的子 结点或孩子结点
J、K、L、F、G、I:是叶子节点
结点A的层次:1 结点L的层次:4
树的高度: 4
计算机基础科学系
主要教学内容
1
算法基础
2
数据结构基础
3
小结
计算机基础科学系
学习目标
1
了解算法的基 本概念;掌握算法 的三种基本结构; 了解常见算法。
2
掌握数据的逻 辑结构、物理存储 结构的基本概念。
3
掌握线性列表、 堆栈、队列的基本 操作;掌握树和二 叉树的概念;掌握 二叉树的特点、性 质和遍历方案。
计算机基础科学系
i=4,a(4)=78, a(5)=45<78,j=5;
a(4)与a(5)交换。
i=5,a(5)=78, a(6)=56<78,j=6; a(3)与a(5)交换。
⑵冒泡排序
1.3常见算法介绍
第一步:从最后一个数开始与前面的 数比较56>32,32>8,位置不变;8<45, 两者交换位置;8<78,交换位置, 8<23,交换位置。得出最小值为8。
按后序遍历顺序访问根结点的右子树 访问根结点
计算机基础科学系
2.4树
前序遍历(根左右):
ABCDEF
中序遍历(左根右) :
CBDAEF
计算机基础科学系
后序遍历(左右根) :
CDBFEA
小结
❖ 所谓算法是指解决问题的方法与步骤,是对解决 某一问题方案准确的描述。
❖ 算法的复杂度是算法效率的度量标准之一,有时 间复杂度和空间复杂度之分。
空间复杂度 是指算法需要消 耗的空间资源。
算法执行时间的增长率和 f(n) 的增长率相同,记作:T(n) = O(f(n))
(a)x:=x+1
(b)for i:=1 to n do x:=x+1
(c) for j:=1 to n do for k:=1 to n do x:=x+1
基本操作: 加法操作
重点与难点
算法的概念、特征与设计原则,算 法的描述与常用算法的实现思想为本讲 的重点;数据结构的基本知识为本讲的 难点。
计算机基础科学系
1.算法基础
算法 Algorithm
算法是指解决问 题的方法和步骤 ,是对解决某一 问题方案的准确 描述。
如:求圆的面积问题 (s=πr2 ) ,把这个问题交给计 算机来处理,过程为先输入圆 的半径,然后按面积计算公式 计算,最后输出计算结果。描 述如下: 1.输入圆的半径 2.计算圆的面积;s=πr2; 3.输出圆的面积s; 上述这种解决问题的方法就是 一个算法。
2.4树
树的种类有很多,如无序树、有序树、二叉树和完全二叉树等。 1、二叉树的概念
二叉树是每个结点最多有两个子树的有序树,这两个子树分别称为左子树和右子树, 而每一棵子树又是二叉树。 2、二叉树的特点
每个结点至多只有二棵子树,二叉树的子树有左、右之分,且其次序不能颠倒
空二叉树
仅有根结点
右子树为空
左子树为空
时间复杂度: (a)O(1) (b)O(n) (c)O(n2)
计算机基础科学系
程序对于精心选择的、典型、苛 正确性 刻且带有刁难性的几组输入数据
能够得出满足要求的结果。
可读性
高效率与低存储量需求
算法设计的原则
计算机基础科学系
健壮性
当输入的数据非法时,算法 应当恰当地作出反映或进行 相应处理。
1.2算法的三种基本结构
⑴选择排序
1.3常见算法介绍
1.排序算法
计算机基础科学系
i=1,a(1)=23,a(4)=8<23,j=4;a(1)
与a(4)交换。
i=2,a(2)=78,a(3)=45<78,j=3;
a(4)=23<45,k=4; a(2)与a(4)交换。
i=3,a(3)=45, a(5)=32<45, j=5;a(3)与a(5)交换。
相关文档
最新文档