静态查找表动态查找表二叉搜索树AVL树哈希表(Hash)
- 格式:ppt
- 大小:652.50 KB
- 文档页数:53
第九章查找一、选择题1•若查找每个记录的概率均等,则在具有n 个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL 为()。
A .(n-1)/2B.n/2C.(n+1)/2D.n 2. 下面关于二分查找的叙述正确的是()A. 表必须有序,表可以顺序方式存储,也可以链表方式存储C.表必须有序,而且只能从小到大排列B. 表必须有序且表中数据必须是整型,实型或字符型D.表必须有序,且表只 能以顺序方式存储3. 用二分(对半)查找表的元素的速度比用顺序法() A. 必然快B.必然慢C.相等D.不能确定4. 具有12个关键字的有序表,折半查找的平均查找长度()A.3.1B.4C.2.5D.55.当采用分块查找时,数据的组织方式为()A. 数据分成若干块,每块内数据有序B. 数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D. 数据分成若干块,每块(除最后一块外)中数据个数需相同6. 二叉查找树的查找效率与二叉树的((1))有关,在((2))时其查找效率最低(1) :A.高度B.结点的多少C.树型D.结点的位置(2) :A.结点太多B.完全二叉树C.呈单枝树D.结点太复杂。
7. 对大小均为n 的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找失败,它们的平均查找长度是((1)),对于查找成功,他们的平均查找长度是((2))供选择的答案:A.相同的B.不同的9.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是()A .(100,80,90,60,120,110,130)B.(100,120,110,130,80,60,90) C. (100,60,80,90,120,110,130)D.(100,80,60,90,120,130,110)10. 在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A 的左孩子的平衡因子为0右孩子的平衡因子为1,则应作()型调整以使其平衡。
c语言中常用的查找C语言中常用的查找引言:在编程中,查找是一项非常常见且重要的操作。
无论是在数组、链表、树还是图等数据结构中,都需要进行查找操作来寻找特定的数据或者确定某个元素的存在与否。
C语言提供了多种查找算法和数据结构,本文将介绍C语言中常用的查找方法。
一、线性查找线性查找是最简单的查找方法之一,也称为顺序查找。
其基本思想是从数据集合的起始位置开始逐个比较待查找元素与集合中的元素,直到找到目标元素或者遍历完整个集合。
在C语言中,可以使用for循环或者while循环实现线性查找。
线性查找的时间复杂度为O(n),其中n为数据集合中元素的个数。
二、二分查找二分查找又称为折半查找,是一种高效的查找算法,但要求数据集合必须是有序的。
其基本思想是将数据集合分为两部分,然后通过与目标元素的比较来确定目标元素在哪个部分中,从而缩小查找范围。
重复这个过程直到找到目标元素或者确定目标元素不存在于数据集合中。
二分查找的时间复杂度为O(logn),其中n为数据集合中元素的个数。
三、哈希表查找哈希表是一种通过哈希函数将关键字映射到存储位置的数据结构,它能够以常数时间复杂度O(1)进行查找操作。
在C语言中,可以使用数组和链表的结合来实现哈希表。
哈希表的关键之处在于哈希函数的设计,良好的哈希函数能够将关键字均匀地映射到不同的存储位置,从而提高查找效率。
四、二叉搜索树查找二叉搜索树是一种常用的数据结构,它满足以下性质:对于任意节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。
在C语言中,可以使用指针和递归的方式来实现二叉搜索树。
通过比较目标值与当前节点的值,可以确定目标值位于左子树还是右子树中,从而缩小查找范围。
五、图的遍历在图的数据结构中,查找操作通常是指遍历操作。
图的遍历有两种方式:深度优先搜索(DFS)和广度优先搜索(BFS)。
深度优先搜索通过递归的方式依次访问图中的每个节点,直到找到目标节点或者遍历完整个图。
数据结构-动态查找表⼀、动态查找的概念:动态查找表:表结构在查找过程中动态⽣成。
要求:对于给定值key, 若表中存在其关键字等于key的记录,则查找成功返回(或者删除之);否则插⼊关键字等于key 的记录。
⼆、动态查找表1. 1. ⼆叉排序树的定义⼆叉排序树的定义(Binary Sort Tree或Binary Search Tree):⼆叉排序树或者是⼀棵空树,或者是满⾜下列性质的⼆叉树:(1)若左⼦树不为空,则左⼦树上的所有结点的值(关键字)都⼩于根节点的值;(2)若右⼦树不为空,则右⼦树上的所有结点的值(关键字)都⼤于根节点的值;(3)左、右⼦树都分别为⼆叉排序树。
如下图15-1所⽰,该图中的树就是⼀棵⼆叉排序树。
任何⼀个⾮叶⼦结点的左⼦树上的结点值都⼩于根结点,右⼦树上的结点值都⼤于根结点的值。
图1中,⼆叉树的结点值中序遍历的结果为:3,12,24,37,45,53,61,78,90,100。
结论:若按中序遍历⼀棵⼆叉排序树,所得到的结点序列是⼀个递增序列。
1. 1. ⼆叉排序树(BST树)的查找思想BST树的查找思想:(1)⾸先将给定的K值与⼆叉排序树的根节点的关键字进⾏⽐较:若相等,则查找成功;(2)若给定的K值⼩于BST树的根节点的关键字:继续在该节点的左⼦树上进⾏查找;(3)若给定的K值⼤于BST树的根节点的关键字:继续在该节点的右⼦树上进⾏查找。
1. 2. ⼆叉排序树总结(1)查找过程与顺序结构有序表中的折半查找相似,查找效率⾼;(2)中序遍历此⼆叉树,将会得到⼀个关键字的有序序列(即实现了排序运算);(3)如果查找不成功,能够⽅便地将被查元素插⼊到⼆叉树的叶⼦结点上,⽽且插⼊或删除时只需修改指针⽽不需移动元素。
三、红⿊树1. 1. 红⿊树的定义红⿊树(Red Black Tree)是⼀种⾃平衡⼆叉查找树,是在计算机科学中⽤到的⼀种数据结构,典型的⽤途是实现关联数组。
它是在1972年由Rudolf Bayer发明的,当时被称为平衡⼆叉B树(symmetric binary B-trees)。
本科目包括《数据结构》与《计算机操作系统》两门课程,总分1 50分,两门课程各占75分《数据结构》。
了解:磁盘容错技术与数据一致性控制。
第七章操作系统接口。
理解与掌握:联机命令接口、系统调用、图形用户接口元素、图形用户接口元素得基本操作。
了解:对UNIX得SHELL与UNIX得系统调用作一般了解三、考试题型及分值选择题:20弔填空题:30%简答题:4 0%计算题:1 0%电子科技大学2011年攻读硕士学位研究生入学试题考试科目:820计算机专业基础注:所有答案必须写在答題纸上.做在试卷或草稿纸上无效数据结构75分一、选择题(每小题1分,共8分)1.若结点的存储地址与其关健字值之间存在某种对应关系,则称这种存储结构为( )A.顺序存错结构B.链式存储结枸C.索引存储结构D.散列存储结构2.能在0(1)时间内访何线性表的第i个元素的结构是()A.顺序茨B.单链茨C.单向循环链表D.双向链表3.—个nxn的对称矩阵.如果以行主序存储,每个元素占一个单元,则其需要的最犬存储空间为()Xn^n B n x rv2 C (n+l>n/2 D (n 十l"(n+l)/24.已知一稀疏矩阵的三元组表为『(L 2, 3), (b 6, 1), (3, 1. 5). (3. 2, ・】),(4, 5, 4), (5,1, -3),则其转宜矩阵的三元组农中第3个三元组为( )A・(2, 1. 3) B・(3, 1, 5) C・(3, 2, -1) D.(2, 3, -1)5.在有n个结点的二叉链表中,值为空的链域的个数为( )A. n-1 B・n十 1 C. 2n-l D. 2n+l6.对于一个具有n个顶点的无向图,若采用邻接表表示,则存放表头结点的数组的大小为( )A.nB.n+1C.n-1D.n+1 边数7.下图所示的二叉树是( )A.二叉判定树B.二叉排序树C.二叉平衡树D.堆&用某种排序方法对关健字序列(25, 84, 21, 47, 15. 27, 68, 35, 20)进行排学时.序列的变化情况如下:20, 15, 21, 25, 47, 27. 68, 35. 8415, 20, 21, 25, 35, 27, 47, 68, 8415. 20. 21, 25, 27, 35. 47, 68, 84则所采用的排序方法是()A.选择排序B.希尔排序C.归并排序D・快連排序二、填空题(每小题1分,共8分)1.若一个算法中的语句頻度之和为T(n)-3720n4-4nlogn,则算法的时间尖杂度为 _______ •2.在长度为n的顺序表的笫i(l<i<n+l)个位置上插入一个元索,元素的移动次数为 _______ ■3.一个队列的入队序列是a、b、s d,则队列的输出序列为_____________ •4.广义表A=Ka,(b)O(c,d,e))的长度为 _________ ,5.在有n个结点的哈夫曼树中,其叶子结点数是________________ .6.已知某二叉树的先序序列为AI3DECF,中序序列为DBEAFC.則其后序序列为 ______________ •7.在含n个顶点和e条边的无向图的邻接矩阵中.零元素的个数为—o&在以{4,5,6,7,8}作为叶子结点权值构造的二叉树中,其帝权路径长皮嚴小三、简答题(每小题6分,共36分)1.已知一棵完全二叉树共有893个结点,试求:(1)树的高度;(2)叶子结点数目•2.用Dijkstra算法求岀下图中从顶点vl到其余各顶点的最短路径,按求解过程依次写出各条最短路径及其路径长度.3.己知关键字序列在a[l・・8]中的初始状态为I 2 3 4 5 ,6 7 8a | 48 | 70 | 33 丨65 | 24 | 56 | 12 [ 92写岀将其调整为大根堆的过程中毎一次筛选后a的状态。
数据结构大纲知识点一、绪论。
1. 数据结构的基本概念。
- 数据、数据元素、数据项。
- 数据结构的定义(逻辑结构、存储结构、数据的运算)- 数据结构的三要素之间的关系。
2. 算法的基本概念。
- 算法的定义、特性(有穷性、确定性、可行性、输入、输出)- 算法的评价指标(时间复杂度、空间复杂度的计算方法)二、线性表。
1. 线性表的定义和基本操作。
- 线性表的逻辑结构特点(线性关系)- 线性表的基本操作(如初始化、插入、删除、查找等操作的定义)2. 顺序存储结构。
- 顺序表的定义(用数组实现线性表)- 顺序表的基本操作实现(插入、删除操作的时间复杂度分析)- 顺序表的优缺点。
3. 链式存储结构。
- 单链表的定义(结点结构,头指针、头结点的概念)- 单链表的基本操作实现(建立单链表、插入、删除、查找等操作的代码实现及时间复杂度分析)- 循环链表(与单链表的区别,操作特点)- 双向链表(结点结构,基本操作的实现及特点)三、栈和队列。
1. 栈。
- 栈的定义(后进先出的线性表)- 栈的基本操作(入栈、出栈、取栈顶元素等操作的定义)- 顺序栈的实现(存储结构,基本操作的代码实现)- 链栈的实现(与单链表的联系,基本操作的实现)- 栈的应用(表达式求值、函数调用栈等)2. 队列。
- 队列的定义(先进先出的线性表)- 队列的基本操作(入队、出队、取队头元素等操作的定义)- 顺序队列(存在的问题,如假溢出)- 循环队列的实现(存储结构,基本操作的代码实现,队空和队满的判断条件)- 链队列的实现(结点结构,基本操作的实现)- 队列的应用(如操作系统中的进程调度等)四、串。
1. 串的定义和基本操作。
- 串的概念(字符序列)- 串的基本操作(如连接、求子串、比较等操作的定义)2. 串的存储结构。
- 顺序存储结构(定长顺序存储和堆分配存储)- 链式存储结构(块链存储结构)3. 串的模式匹配算法。
- 简单的模式匹配算法(Brute - Force算法)的实现及时间复杂度分析。