计算机软件技术基础08 - Data Structure(6)- BW

合集下载

计算机软件技术基础沈被娜课后习题答案较全

计算机软件技术基础沈被娜课后习题答案较全

计算机软件技术基础(第三版)沈被娜课后习题答案较全(总29页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--第一章信息与计算机什么是信息信息与数据的区别和联系在何处信息定义之一:信息是现实世界中存在的客观实体、现象、关系进行描述的数据。

信息定义之二:信息是经过加工后并对实体的行为产生影响的数据。

与数据的区别和联系:数据定义:数据是现实世界客观存在的实体或事物的属性值,即指人们听到的事实和看到的景象。

我们把这些数据收集起来,经过处理后,即得到人们需要的信息。

信息和数据的关系可以归结为: 1. 信息是有一定含义的数据。

2. 信息是经过加工(处理)后的数据。

3. 信息是对决策有价值的数据。

信息有哪些基本属性信息的基本属性有: 1. 事实性。

2. 等级性。

3. 可压缩性。

4. 可扩散性。

5. 可传输性。

6. 共享性。

7. 增值性和再生性。

8. 转换性。

计算机的主要特点是什么计算机最主要的特点是: 1. 高速自动的操作功能。

2. 具有记忆的能力。

3. 可以进行各种逻辑判断。

4. 精确高速的计算能力。

完整的计算机系统应该包括哪几部分目前最完整的计算机系统学说认为由五部分组成: 1. 人员 2. 数据 3. 设备 4. 程序 5. 规程什么是计算机硬件什么是计算机软件硬件:泛指实际存在的物理设备,包括计算机本身及其外围设备。

微型计算机的硬件系统:主机、外存储器、输入设备、输出设备、微机的系统总线。

软件:是指计算机程序、方法、规则的文档以及在计算机上运行它时所必须的数据。

计算机软件一般分为系统软件和应用软件。

软件技术发展的几个阶段各有什么特点它与硬件的关系如何第一阶段:高级语言阶段特点:这一时期,编译技术代表了整个软件技术,软件工作者追求的主要目的是设计和实现在控制结构和数据结构方面表现能力强的高级语言。

但在这一时期内,编译系统主要是靠手工编制,自动化程度很低。

计算机软件技术基础07 - Data Structure(5) - BW

计算机软件技术基础07 - Data Structure(5) - BW

–顶点访问序列如下:
v3 v1 v2 v4 v9 v6 v5 v7 v8
15
3. 数据结构 3.6 图
• 深度优先搜索算法 - 用邻接矩阵作为图的存储结构
–一般用递归算法实现
// A[1:n,1:n]为邻接矩阵,V为起始顶点 DFS(A, n, v) visit(v) // 访问顶点 visited[v]←true //设置访问标志 for j=1 to n if (A[v,j]=1) and (not visited[j]) then DFS(A, n, j) endif endfor
1 2 3 4 5 6 距离 路径 0 1 50 1 10 1 25 3 45 1 ∞ 1
21
3. 数据结构
3.6 图
• 图的应用 -- 拓扑排序
–我们常用有向图描述一个工程的进行过程 –一个工程分为若干子工程,每个工程称为活动 –在图中,顶点表示活动,弧表示活动之间的优先关系 –这种有向图称为作业活动网或AOV网(activity on vertex) –AOV网中不允许存在回路(死锁:一个活动的开始以其自身 结束为前提) –如果:顶点 i 到 j 有一条弧,称 i 是 j 的前驱,j 是 i 的后继 ,如果只有一条弧,称为直接前驱、直接后继。 –拓扑排序:为AOV网中的每项活动的执行安排一个线性序列 关系,例如(a)中
4
3. 数据结构
3.6 图
• 图的基本概念
–度、入度、出度:
• 无向图,与某顶点相连的边的数目称为该顶点的度(degree)
–degree( 2 ) = 2;degree( 1 ) = 3;degree( 4 ) = 1
• 有向图,以某顶点为初始点的弧的数目称为该顶点的出度 (out-degree),以某顶点为终端点的弧的数目称为该顶点的入 度(in-degree)

《软件技术基础》课件第6章

《软件技术基础》课件第6章

图6.4 满二叉树、完全二叉树和非完全二叉树
如果对一棵深度为k的二叉树结点按照上述编号规则进行 编号,所得顺序与满二叉树相应结点的编号顺序一致,则称这 棵二叉树为完全二叉树。完全二叉树的前k-1层可以看做是满 二叉树,而第k层的结点集中在最左边的若干位置上。图6.4(b) 和(c)分别给出了完全二叉树和非完全二叉树的例子。
6.2 二 叉 树
6.2.1 二叉树的定义 二叉树是另一种树形结构。它与树形结构的区别是:每个
结点最多有两棵子树;子树有左右之分。 利用递归的形式可以得到二叉树的定义:二叉树是n(n≥0)
个结点的有限集合。二叉树或为空(n=0),或是由一个根结点 加上两棵分别称为左右子树的,互不相交的二叉树组成。
图6.7 一般二叉树的结点编号和顺序存储结构
利用以上表示方法,可以给出一般二叉树的顺序存储结构
的C语言描述如下:
#define maxsize 1024;
typedef int datatype;
typedef struct
{ datatype
data[maxsize];
//存放二叉树的向量
int
以第k+1层上至多有2×2k-1=2k个结点,故命题成立。
性质2:深度为k的二叉树最多有2k-1个结点(k≥1)。 由性质1可得,1至k层各层最多的结点个数分别为:20, 21, 22, …, 2k-1。该等比数列之和为
k
2i1 2k 1
(6-1)
i1
性质3:对任意一棵二叉树T,如果其终端结点个数为n0, 度为2的结点个数为n2,则n0=n2+1。
孩子:结点子树的根称为这个结点的孩子。 双亲:结点的直接上层结点称为该结点的双亲。 兄弟:同一双亲的孩子互称为兄弟。 堂兄弟:双亲在同一层上的结点互称为堂兄弟。 路径:从某个结点到其子树中另一个结点之间的分支,构 成两个结点之间的路径。 子孙:以某结点为根的子树中的所有结点都被称为该结点 的子孙。 祖先:从根结点到该结点路径上的所有结点。 森林:m(m≥0)棵互不相交的树的集合。

软件技术知识基础-数据结构

软件技术知识基础-数据结构


总结词
栈是一种后进先出(LIFO)的数据结构。
VS
详细描述
栈只允许在末尾进行插入和删除操作,通 常用于实现函数调用、括号匹配等功能。 栈的优点是插入和删除速度快,缺点是空 间利用率较低。
队列
总结词
队列是一种先进先出(FIFO)的数据结构。
详细描述
队列允许在一端进行插入操作,在另一端进 行删除操作,通常用于实现任务调度、缓冲 区处理等功能。队列的优点是空间利用率高, 缺点是插入和删除速度较慢。
软件技术知识基础-数 据结构
目 录
• 数据结构概述 • 线性数据结构 • 非线性数据结构 • 排序与查找 • 数据结构的应用
01
数据结构概述
数据结构的定义
数据结构:数据结构是计算机中组织数据的方式,它定义了数据元素之间的逻辑关系。数据结构是计算机存储、组织数据的 方式,它涉及到数据的逻辑结构、物理结构以及数据元素之间的关系。
感谢您的观看
04
排序与查找
排序算法
冒泡排序
通过重复地遍历待排序序列,比较相邻元素的大 小,交换位置,使得较大的元素逐渐往后移动, 最终达到排序的目的。
插入排序
将待排序元素插入到已排序序列中的适当位置, 使得插入后仍然保持有序,直到所有元素均插入 完毕。
选择排序
每次从未排序的元素中选取最小(或最大)的一 个元素,将其放在已排序序列的末尾,直到所有 元素均排序完毕。
快速排序
采用分治策略,通过一趟排序将待排序序列分割 成独立的两部分,其中一部分的所有元素均比另 一部分的元素要小,然后再按此方法对这两部分 继续进行排序,以达到整个序列有序。
查找算法
线性查找
二分查找
哈希查找

计算机软件技术基础06 - Data Structure(4) - BW

计算机软件技术基础06 - Data Structure(4) - BW

6
3. 数据结构
3.5 树与二叉树
• 二叉树的性质
• 二叉树的第 i 层上至多有 2 i - 1 (i≥1)个结点 • 深度为 h 的二叉树中至多含有 2 h – 1 个结点 • 在任意二叉树中,若有 n0 个叶子结点,n2 个度为 2 的结点,则必有: n0 = n2 + 1 请见 P54 自学
•一般树转换为二叉树
–转换方法:
1)兄弟结点之间用线连起来 2)对每个结点,除了与它的第一个孩子保持联系外, 去除与其它孩子的联系 3)以树根为轴心,将整棵树顺时针旋转45度
–转换后的二叉树右子树必然为空。
12
3. 数据结构
3.5 树与二叉树
按某种规律,对树的每个 结点做且仅做一次访问。
•二叉树的遍历
–是二叉树的一种最基本的运算。许多二叉树的运算 都是在遍历算法的基础上展开的,如求二叉树的结 二叉树由三个部分构成。根、左 点数、叶子数、深度等。 、右子树。所以要遍历树中的结 点,要依次遍历这三个部分。 –三种遍历方式
• 先序遍历(DLR):根 -> 左子树 -> • 中序遍历(LDR):左子树 -> 根 -> • 后序遍历(LRD):左子树 -> 右子树 • 这里的“先”,“中”,“后”是指 DRL RDL RLD 右子树 右子树 -> 根 “根” 的先中后
2
3. 数据结构
3.5 树与二叉树
• 树的基本概念
–结点(node):树中的元素由两部分组成:
• 数据域 • 若干指向其子树分支的指针域
–结点的度(node’s degree):结点拥有的子树的个数 –树的度(tree’s degree):树中结点度数的最大值 –叶子(leaf):度为 0 的结点 –分支结点(branch node):度≠0 的结点 –孩子(childern):除root外,每个结点都是其前趋结点的孩子 –双亲(parents):孩子结点的上层结点 –兄弟(slbling):同一双亲的孩子 –结点的层次(level):根为第一层,其它任何结点的层次是其双亲 结点的层次+1 –树的深度/高度(depth):树中结点的最大层次数 –森林(forest):m棵互不相交的树的集合(m≥0) –有序树:兄弟结点间有先后次序的树,不能互换;否则,称为无 序树 3

计算机软件技术基础12 - Database(2) - BW

计算机软件技术基础12 - Database(2) - BW

S3 C D2 N2 M2 C3 CC h3 g6 • 例如:从学生成绩表构造关系模式 –将重复组作为新的属性: SGT(S#,SN,D#,DN,MN,C#1,CN1,H1,G1,C#2,CN2,H2,G2,….) » 虽然满足关系的要求,但:属性个数不定,浪费空间,查找、排序难。 –将重复组所在行的其它属性予以重复:SGT(S#,SN,D#,DN,MN,C#,CN,H,G)
学号 01001
所在学院 信息
01002
……
B
20
表1
信息
4
5. 数据库系统
5.2 关系数据库系统
• 关系代数
–是对关系进行代数运算的总和。其实质就是对二维表格进行 任意的分割和组装,随机地构造出各式各样用户所需要的表 格—关系。是使关系数据库灵活方便、表达能力强的主要原 因之一。 关系R 关系S –运算对象:关系 – 表 A B C A B C –分类:
• 把需求分析过程中所获得的基本E-R图(概念模式), 转化为与特定DBMS相适应的数据模型。 • 在关系数据库中,就是要把E-R图转化为关系模型。 • 转换规则:
–一个实体转换为一个关系模式。实体的特征(属性)转换为关 系的属性;实体标识符转换为关系的关键字。 –一个联系转换为一个关系模式。与联系相关的实体的标识符 组合成关系的关键字。 –但是、如果联系没有相应的属性且不是m:n的关系,则一般 不产生新的关系,而是把一个关系的关键字作为另一个关系 的属性(例如:雇员属于部门,可在雇员的属性中加入部门 的关键字)。
–1:1,1:m,m:n
• 函数依赖:描述的是实体内各属性之间的关系。如果一个实体的两 个属性X和Y存在如下关系: Y = f(X) 则称X函数决定Y(Y函数依赖于X),记作 X Y

东北大学计算机软件技术基础08 - Data Structure(6)- BW

• SK被用来标识一组记录(a group of records ) • SK可以由一个或两个以上的数据项组合而成
3
3. 数据结构
3.7 查找
• 查找的定义
K (信息)
没找到 查找

输出找到 的记录
–给定一个 K 值 –在含有 n 行记录的数据表中搜索 –寻找一个关键字等于 K 的记录 –如果找到,就输出该记录 –如果没找到,就输出查找失败信息
• 不仅和“查找算法”有关 • 还和所要查找的数据的存放形式(数据结 构)有关。
学 姓 班 成 号 名 级 绩 25 张 仪 85 勇 1 23 李 计 90 军 1
N行
„ „ „ „ 99 黄 自 99 尚 1
M个属性
2
3. 数据结构
3.7 查找
主关键字 次关键字
• 一般数据的存放形式
–在查找中,通常考虑数据以记录(record )的形式存储在表中,表是记录的集合。一 个表由 N 行记录(数据元素) 和 M 个属性 (数据项)构成 –一般地,每个记录都有主关键字(primary key, PK)
• PK被用来唯一地标识一个记录(a record) • PK通常由一个数据项组成,也可由两个以上的 数据项组合而成
N行
学 姓 班 成 号 名 级 绩 25 张 仪 85 勇 1 23 李 计 90 军 1 „ „ „ „ 99 黄 自 99 尚 1
M个属性
–记录也可以有次关键字(secondary key, SK)
• 先计算Hash函数得到哈希地址 loc • 再把要插入的记录放到 loc 哈希地址上
相应 ki 的记录 ai
–哈希函数的运算
• 如果 关键字的数据类型是数值类型,可以直接参与 运算 • 如果关键字的数据类型是非数值类型,要先转换为 数值类型再参与运算,例如:H(“A”)=1

计算机软件技术基础完整版

计算机软件技术基础完整版一、程序设计语言程序设计语言是程序员与计算机之间进行交流的工具。

它们允许程序员编写指令,告诉计算机如何执行特定的任务。

常见的程序设计语言包括:高级语言:例如C、C++、Java、Python等,它们提供了丰富的抽象功能,使程序员能够更高效地编写代码。

低级语言:例如汇编语言和机器语言,它们与计算机硬件更接近,但编写起来更复杂。

二、数据结构数据结构是存储和组织数据的方式。

它们允许程序员高效地存储、检索和操作数据。

常见的数据结构包括:数组:用于存储一系列相同类型的元素。

链表:用于存储一系列不同类型的元素,元素之间通过指针连接。

栈:后进先出的数据结构,常用于存储临时数据。

队列:先进先出的数据结构,常用于存储等待处理的数据。

三、算法算法是解决问题的步骤。

它们是程序的核心,决定了程序的性能和效率。

常见的算法包括:排序算法:例如冒泡排序、选择排序、快速排序等,用于将数据按照特定顺序排列。

搜索算法:例如线性搜索、二分搜索等,用于在数据结构中查找特定元素。

图算法:例如深度优先搜索、广度优先搜索等,用于处理图结构的数据。

四、软件工程软件工程是开发高质量软件的学科。

它涵盖了软件开发的各个方面,包括需求分析、设计、编码、测试、维护等。

五、软件测试软件测试是确保软件质量的重要步骤。

它包括单元测试、集成测试、系统测试和验收测试等。

六、软件维护软件维护是在软件发布后对其进行修改和改进的过程。

它包括修复bug、添加新功能、提高性能等。

七、软件项目管理软件项目管理是确保软件项目按时、按预算、按质量完成的过程。

它包括需求管理、进度管理、成本管理、质量管理等。

八、软件文档软件文档是描述软件的功能、设计、实现和使用等方面的文档。

它包括需求规格说明书、设计文档、用户手册等。

九、软件工具软件工具是辅助软件开发、测试和维护的工具。

它们包括集成开发环境、代码编辑器、调试器、测试工具等。

十、软件发展趋势云计算:软件将更多地运行在云端,而不是本地计算机上。

软件技术基础第二章(8)基本数据结构复习课PPT课件

第二章:基本数据结构复习课
1
.
复习
顺序存储结构下逆转线性表的算法。
输入:长度为n的线性表数组A(1:n) 输出:逆转后的长度为n的线性表数组A(1:n)
Procedure InvertSL(n,A) for k=1 -k+1);A(n-k+1)=t } return
12
.
计算二叉链表深度的算法。
输入:二叉链表的头指针BT 输出:二叉链表的深度d
Procedure Depth(BT,d) d=0 if (BT=0) then return else { Depth(L(BT),d1)
if (d1>d) then d=d1 Depth(R(BT),d2) if (d2>d) then d=d2 } d=d+1 return
for j=1 to n do { if (V(k,j)>0) then
{ New(p) Num(p)=j; Val(p)=V(k,j) Next(p)=Link(k); Link(k)=p }
} } Return
14
.
if (V(k)<0) then { Next(k)=Next(Head); Next(Head)=k; Next(kk)=j } else kk=k k=j } return
7
.
反复找出给定线性单链表中结点值最小的结点,输出该值并将该结点从表中删除。
输入:线性单链表头指针Head,结点值均为正整数 输出:按值从小到大输出线性单链表中的值
6
.
按值重新链接循环链表的算法。
输入:按绝对值从小到大链接的循环链表头指针Head 输出:按值从小到大链接的循环链表头指针Head

软件技术基础-ppt可编辑全文

*
《数据结构课程》所处的地位:
*
什么是数据结构? 几个概念: 数据(Data):是对信息的一种符号表示。在计算机科学中是指所有能输入(识别)到计算机中(存储)并被计算机程序处理(加工)的符号的总称。 数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。 数据对象(Data Object):是性质相同的数据元素的集合。是数据的一个子集。
*
数据的逻辑结构分类 根据数据元素间关系的基本特性,有四种基本数据结构 (集合)——数据元素间除“同属于一个集合”外,无其 它关系 线性结构——一个对一个,如线性表、栈、队列 树形结构——一个对多个,如树 图状结构——多个对多个,如图
*
数据的逻辑结构
从逻辑关系上描述数据,与数据的存储无关; 从具体问题抽象出来的数据模型; 与数据元素本身的形式、内容无关; 与数据元素的相对位置无关。
*
例1 书目自动检索系统
登录号:
书名:
作者名:
分类号:
出版单位:
出版时间:
价格:
书目卡片
书目文件
按书名
按作者名
按分类号
索引表
线性表
*

……..
……..
…...
…...
…...
…...
例2 计算机和人对弈问题
*
例3 多叉路口交通灯管理问题
C
E
D
A
B
AB
AC
AD
BA
BC
BD
DA
DB
DC
EA
EB
*
数据的逻辑结构
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
3. 数据结构
3.7 查找
• 查找方法 ---–平均查找长度
• • • •
分块查找
是两次查找的平均查找长度之和 ASL=ASLb+ASLn (索引表+块) 分成b块,每块记录个数:s=n/b 对分查找确定块时,平均查找长度:
ASL1 log 2 (b 1) 1 (s 1) / 2 log 2 (n / s 1) s / 2
5 ↑ 13 94 42 70 55 46 17
–找到第 i 个记录所经历的比较次数 Ci = i
1 n 1 ASL Pi Ci i (n 1) n i 1 2 i
5
n
3. 数据结构
3.7 查找 • 查找方法 ---- 线性查找
– 线性查找流程
i=1 r[i].key=K?
监视哨
r[n+1].key = K
Y
2次比较 慢 1次比较 快
i=1
N
i=i+1 成#43;1
Y
i≤n?
i≤n?
Y
成功
N
失败
N
失败
– 优缺点:
• 算法简单,对表无特殊要求,适合于短表 • 表长时,效率较低
6
3. 数据结构
3.7 查找
• 查找方法 ----对分查找
–前提条件:表中记录是按关键字有序排列的 –不是逐行比较,而是跳跃式查找 –把查找区域折半 –假设表中记录由小到大排列
3.7 查找
• 查找方法 ---- 线性查找(顺序查找)
–最简单的查找方式 –前提条件:无(即所查找的表中记录可以是“无序的”) –在表中,从第一行记录开始,逐行比较记录的关键字 –找到关键字和给定的 K 值相等的元素,则查找成功; –若比较结果与表中 n 个记录的关键字都不相等,则查找失 败 K=55,K=60
–前面的几种查找方法,仅适用于线性存储结构。二叉排序树 查找适用于非线性结构的存储方式 –可以避免线性结构给对分查找带来的问题
• 线性有序排列 • 插入或删除操作时,对线性排序的维护
–前提条件:“二叉树有序”,也就是必须是二叉排序树
• 对于二叉树中的每一个非叶子结点 X, • X的左子树的所有结点上的记录的关键字 <X 结点上的记录的关键字 • X的右子树的所有结点上的记录的关键字 >X 结点上的记录的关键字
15
3. 数据结构
3.7 查找 • 查找方法 ----哈希表与查找
– 基本想法:
• 不经过关键字的比较,就能存取或查找到相应的元素,这 样ASL=0。
关键字 ki 映射 H(ki)
– 实现技术:
• 要想实现直接存储,知道关键字的值,就应该能知道存储 地址,为此通过一个函数, • 建立“关键字值”与“存储位置”之间的映射 • 不必进行比较运算,只要把 K值 代入 “函数”中就可找 到目标记录的存储位置(哈希地址),这个映射函数被称 为~
• 顺序查找确定块时,平均查找长度:
ASL2 (b 1) / 2 (s 1) / 2 (s 2 2s n) / 2s
–特点:
• 平均查找长度介于对分查找和线性查找之间 • 不仅适用于向量结构的顺序表,也适用于线性链表
12
3. 数据结构
3.7 查找
• 查找方法 ----
二叉排序树查找
–算法设计
• • • • 和对分查找类似 从根结点开始查找 每次淘汰一个分支 不成功可以插入
13
3. 数据结构
3.7 查找 //在根为 t 的二叉排序树中,查找关键字为 K 的记录
BSTSearch( K, t ) p ← t // p是扫描指针 while ( p ≠ Nil) do //查找一个结点 case K = data( p ) : {查找成功; return} K < data( p ) : {q←p; p←Lchild(p)} K > data( p ) : {q←p; p←Rchild(p)} end-case end-while GetNode(s); data(s)←K; // 找不到时,建立新结点 Lchild(s)←Nil; Rchild(s)←Nil; case t = Nil : t←s; // 插入结点是根结点 K < data(q) : Lchild(q)←s K > data(q) : Rchild(q)←s end-case return
• 不仅和“查找算法”有关 • 还和所要查找的数据的存放形式(数据结 构)有关。
学 姓 班 成 号 名 级 绩 25 张 仪 85 勇 1 23 李 计 90 军 1
N行
„ „ „ „ 99 黄 自 99 尚 1
M个属性
2
3. 数据结构
3.7 查找
主关键字 次关键字
• 一般数据的存放形式
–在查找中,通常考虑数据以记录(record )的形式存储在表中,表是记录的集合。一 个表由 N 行记录(数据元素) 和 M 个属性 (数据项)构成 –一般地,每个记录都有主关键字(primary key, PK)
• • • • • • 效率较高 记录必须是有序排列的 只适用于向量结构的顺序表 当 n 较小时(例如 n<30),对分查找的优越性不是很显著 排序线性表需要时间 顺序存储时,插入、删除不便
10
n
3. 数据结构
3.7 查找
• 查找方法 ---分块查找
– 又称 索引顺序查找。当对线性表即要求查找速度快、又要求动态变化 (插入、删除)时,可采用此方法。 – 前提条件:“分块有序”
数据表
• 平均查找长度(ASL,Average Search Length)
–一次查找所需的比较次数 用统计学的数学期望来评估。 –称为平均查找长度。作为评价算法好坏的一个标准。
n i
ASL PiCi
–Pi 查找第 i 个记录的概率 –Ci 是找到第 i 个记录所经历的比较次数
4
3. 数据结构
• “中间记录”的关键字:r[mid].key • 比较 K 值 和 “中间记录”的关键字
–如果 –如果 –如果 –如果 K = K < K > low r[mid].key 查找成功 r[mid].key 令 high = mid – 1,继续查找 r[mid].key 令 low = mid + 1,继续查找 > high 查找失败
K=55,K=13 5 13 17 42 ↑ 46 55 70 94
–初始查找区域为整个表,先把 K 值和 “中间记录” 关键字进行比较
• • • • 如果 相等,则查找成功 如果 K值 <“中间记录”的关键字 ,则查找区域改为前半区 如果 K值 >“中间记录”的关键字 ,则查找区域改为后半区 在按新的查找区域进行 对分查找
14
3. 数据结构
3.7 查找
• 查找方法 ---–平均查找长度
• • • •
二叉排序树查找
和二叉树的深度和形态有关 接近平衡二叉树时,平均查找长度较小,效率较高 如果形态不好,平均查找长度较长 极端情况下,蜕变成线性表
–特点
• 适用于非线性结构 • 介于对分查找和线性查找之间 • 实际应用当中,有时需要进行“平衡化”处理
8
3. 数据结构
3.7 查找
// 在有 n 个记录的数据表 r 中, // 查找 关键字为 K 的记录 BinSearch( r, n, K ) low ← 1 high ← n while ( low <= high ) do mid ← ( low + high ) div 2 // div 为整除 case K = r[mid].key : { 查找成功;return } K > r[mid].key : low ← mid + 1 K < r[mid].key : high ← mid – 1 end-case end-while return
是各类计算机 语言中常用的 一类数据存储 技术,应用非 常广泛。 应用哈希表存 相应 ki 的记录 ai 储数据的主要 目的是:便于 快速查找.
Addr(ai)
– 哈希函数:Hash函数,H(k)
• k 是要查找的记录的关键字值 • H(k) 是要查找的记录的存储位置(哈希地址)
– 例如:
• 采用学生姓名第一个字母在字母表中的序号为哈希函数, • 即定义 H(“A”)=1; H(“B”)=2; … ; H(“Z”)=26,则哈希 表如图。
• PK被用来唯一地标识一个记录(a record) • PK通常由一个数据项组成,也可由两个以上的 数据项组合而成
N行
学 姓 班 成 号 名 级 绩 25 张 仪 85 勇 1 23 李 计 90 军 1 „ „ „ „ 99 黄 自 99 尚 1
M个属性
–记录也可以有次关键字(secondary key, SK)
9
3. 数据结构
3.7 查找 • 查找方法 ----对分查找
– 平均查找长度
1 n ASL PCi Ci i n i 1 i n 1 log 2 ( n 1) 1 n log 2 ( n 1) 1
– 对分查找的过程可以构成一棵判定树,是一棵接近满二叉树的树。 每次查找比较,淘汰树的一个分支。 – 优点和缺点
7
3. 数据结构
3.7 查找
• 查找方法 ----对分查找
–算法设计
• 下界指示器:low,指向查找区域的头 • 上界指示器:high,指向查找区域的尾 • “中间记录”位置:mid = ( low + high ) / 2
– 2.5 = 2; 3.2 = 3; 4.7 = 4 - 下取整
–如例中的:Chang,Chen,Cao
相关文档
最新文档