MSE数据结构.ppt
《MSE数据结构.ppt》由会员分享,可在线阅读,更多相关《MSE数据结构.ppt(145页珍藏版)》请在课桌文档上搜索。
1、MSE考试辅导数据结构(精简版),课程安排,课程介绍算法分析与抽象数据类型 数组、链表、栈和队列 树查找排序小结,试题结构,考试时间90分钟,满分75分。名词解释(20)问答和编程题(55)时间复杂度Hash二叉树二叉查找树队列,课程安排,课程介绍算法分析与抽象数据类型 数组、链表、栈和队列 树查找排序,数据结构,数据类型,数据结构数据结构是相互之间存在一种或多种特定关系的数据元素的集合最常见的四种基本数据结构包括集合线性结构线性表(数组、链表),栈,队列树形结构树图状结构图,算法复杂度基本概念,算法复杂度(algorithmic complexity):算法消耗的时间或(内存)空间相应分为时
2、间复杂度和空间复杂度两个部分,常见基本算法的时间复杂度分析,常见的一些增长率:常数增长率O(1)线形增长率O(n)二次增长率/平方增长率O(n2)对数增长率O(logN)指数增长率O(nm)关系:常数 对数 线形 平方 指数O(1)O(logN)O(n)O(NlogN)O(n2),常见题型,已知算法求时间复杂度给出代码求时间(空间)复杂度比较算法的快慢,常见算法的复杂度小结,O(1):链表判断为空,双头链表的合并出栈、入栈,进出队列哈希(hash)查找(理想情况)O(n):链表查找、插入、删除,双向链表查找、插入、删除,链表的合并顺序查找法,常见算法的复杂度小结,O(logn):二分查找法BS
3、T树的查找、插入、删除O(nlogn):快速排序、归并排序、堆排序O(n2):插入排序、选择排序、冒泡排序,例题,堆排序的时间复杂度是_A O(1)B O(n)C O(logN)D O(NlogN)答案:D,例题,假设数组已经排好序,则下列代码的复杂度是?int isIn(int a,int n,int k)for(int j=0;j k)j+;else return 0;答案:O(n),例题,给出下列代码的复杂度:void bubble_sort(int a,int size)for(int i=1;iaj+1)ajaj+1;答案:O(n2),例题,对于有序数组而言,顺序查找和两分查找中更快
4、。答案:两分查找,课程安排,课程介绍算法分析与抽象数据类型 数组、链表、栈和队列 树查找排序小结,线性表基本概念和性质,线性表是n个数据元素的有限序列常见线性表包括数组、链表、栈、队列等,环形链表,环形链表又称循环列表,是另一种形式的链式存储结构。它的特点是表中最后一个元素的指针域指向头结点,栈的基本概念和性质,栈:栈是限定仅在表尾进行插入和删除操作的线性表后进先出特性(LIFO)栈顶、栈底、出栈、入栈,栈的基本概念和性质,设计递归问题的非递归算法一般需要用到栈机制三个数a、b、c进栈,不可能出现c、a、b顺序出栈,例题,设有一个栈S,元素S1,S2,S3,S4,S5,S6依次进栈,如果6个元
5、素的出栈顺序为S2,S3,S4,S6,S5,S1,则栈的容量至少应为多少?答案:3,例题,若某栈的输入序列为a、b、c,则所有可能的出栈序列有_种,所有不可能的出栈序列有_种。答案:5,1,队列的基本概念和性质,队列:队列是限定仅在表的一头进行插入、另一头进行删除操作的线性表先进先出特性(FIFO)队尾、队头、入队、出队,例题,在初始为空的队列中插入元素a,b,c,d以后,紧接着作了两次删除操作,此时的队头元素是,队尾元素是。答案:c,d,双向队列,双向队列:亦称双端队列(Deque)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。,课程
6、安排,课程介绍算法分析与抽象数据类型 数组、链表、栈和队列 树查找排序小结,树,大纲描述:树的基本概念和术语;树的前序、中序、后序、叶子序遍历;二叉树及其性质;普通树与二叉树的转换;完全树的数组形式存储;空树的表示;树的应用,Huffman树。,树的基本概念和术语,树:是n(n0)个结点的有限集在任意一棵非空树中:有且仅有一个特定的称为根的结点当n1时,其余结点可以分为m(m0)个互不相交的有限集,其中每个集合本身又是一棵树,并且称为根的子树树属于层次结构数据结构,树的基本概念和术语,树的结点包括一个数据元素及若干指向其子树的分支结点存放数据的部分称之为结点的标签(label),树的基本概念和
7、术语,结点的子树的根称之为该结点的孩子结点(child/children);该结点称为孩子的双亲结点(parent)。拥有同一个双亲结点的孩子结点之间互称兄弟结点(sibling),树的基本概念和术语,如果存在树中的一个结点序列K1,K2Kj,使得结点Ki是结点Ki+1的父结点(1i j),则称该结点序列是树中从结点K1到结点Kj的一个路径(path)或者道路。该路径的长度为j-1,即该路径所经过的边(edge)的数目(或者说结点数目减1)。树中任一结点有一到其自身的长度为0的路径。,树的基本概念和术语,我们通常把树中的路径称为树枝,把路径长度称为树枝长度。如果树中存在一条从结点K到结点M的路
8、径,则称K为M的祖先结点(ancestor),M是K的子孙结点或者后裔结点(descendent)任一结点都是自身的祖先和后裔结点,树的基本概念和术语,一个结点所拥有的子树个数称为结点的度(degree)或次数度为0的结点称之为叶子(leaf),或者外部结点(external node),或者终端结点(terminal node)度不为0的结点称之为分支结点,或者内部结点(internal node),或者非终端结点(non-terminal node)树的度是树内各结点的度的最大值,如果一棵树的度为k;也称这棵树为k次树(k-ary tree),树的基本概念和术语,结点n的层次(level)
9、从根开始定义,根为第一层,根的孩子为第二层;若某结点在第l层,其孩子在l1层。树的深度或高度树中结点的最大层次称为树的深度(depth)或高度(height),例题,例题,列出如上图所示树的所有叶子结点答案:K,L,F,G,M,I,J列出如上图所示树的所有分支结点答案:A,B,C,D,E,H树A为几次树?子树B呢?答案:3,2前页图所示树的高度为多少?答案:4,二叉树及其性质,二叉树(Binary Tree)另一种树形结构,特点是每个结点至多只有二棵子树,且子树有左右之分,其次序不能任意颠倒二叉树可能的五种基本形态,二叉树及其性质,在二叉树的第i层上至多有2i1个结点(i1),例题,一棵二叉树
10、第五层上至多有多少个结点?至少多少?答案:16,1,二叉树及其性质,深度为k的二叉树至多有2k1个结点(k1),例题,一棵深度为5的二叉树至多有多少个结点?至少多少?答案:31,5,二叉树及其性质,对于任何二叉树,如果叶子节点数为n0,度为2的节点数为n2,则n0=n2+1,例题,若一棵二叉树有10个叶结点,则该二叉树中度为2的结的点个数为_。答案:9,例题,若二叉树中度为2的结点有15个,度为1的结点有10个,共有多少个结点?答案:41,二叉树及其性质,满二叉树:一棵深度为k且有2k1个结点的二叉树可以对满二叉树的结点进行连续编号,约定编号从根开始,自上而下,自左而右。完全二叉树:深度为k的
11、,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应时,称为完全二叉树。,二叉树及其性质,完全二叉树特点:叶子结点只可能出现在层次最大的两层上对任一结点,若其右分支下子孙的最大层次为l,其左下分支的子孙的最大层次必为l或者l1。深度为k的完全二叉树第k层最少1个结点,最多2k-1-1个结点;整棵树最少2k-1个结点,最多2k-2个结点,例题,若深度为6的完全二叉树的第6层有3个叶结点,则该二叉树一共有_个结点。答案:25-1+334,二叉树及其性质,具有n个结点的完全二叉树的深度为log2n+1,例题,具有2000个结点的二叉树,其深度至少为_。答案:1
12、1,完全树的数组形式存储,完全树的数组形式存储算法将其编号为i的结点元素存储在一维数组下标为i1的分量中,例题,已知数组20,30,19,87,30,40,55表示一棵完全二叉树,请画出该树。,练习答案,树的遍历,树的遍历 按某种搜索路径巡访树中每个结点,使每个结点均被访问一次仅且一次二叉树的遍历可分为前序、中序、后序、层次序等,树的遍历,二叉树的遍历前序、中序、后序定义层次序:从上而下,从左至右常见问题已知树写遍历结果已知遍历结果画树依据:二叉树的前序和中序遍历可以唯一确定一棵二叉树思路:前序定根,中序定左右,例题,写出左图所示二叉树的前序、中序、后序、层次序遍历结果,例题答案,前序:ABD
13、CEFG中序:DBAECFG后序:DBEGFCA层次序:ABCDEFG,例题,假设一棵二叉树的前序遍历为EBADCHGFIKJ,中序遍历为ABCDEFGHIJK,请画出该树。,例题答案,Huffman树,Huffman树:又称最优树,是一类带权路径长度最短的树基本概念:树的路径长度:从根到每一结点的路径长度之和。结点的带权路径长度:从该结点到树根之间的路径长度与结点上权的乘积。树的带权路径长度:树中所有叶子结点的带权路径长度之和,通常记做WPL。,Huffman树,基本概念:假设有n个权值wi,试构造一棵有n个叶子结点的二叉树,每个叶子的结点带权为wi,则其中WPL最小的二叉树称为最优二叉树或
14、赫夫曼树,Huffman树的构造,一、对给定的n个权值W1,W2,W3,.,Wi,.,Wn构成n棵二叉树的初始集合F=T1,T2,T3,.,Ti,.,Tn,其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空。二、在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和。三、从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。四、重复二和三两步,直到集合F中只有一棵二叉树为止。,Huffman编码,从根结点到叶结点(包含原信息)的路径,向左孩子前进编码为0,向右孩子前进编码为1。,课程安排,课程介绍算法分析
15、与抽象数据类型 数组、链表、栈和队列 树查找排序小结,查找,大纲描述:查找的基本概念;Hash查找法,常见的Hash函数;解决冲突的方法;范围查询。,查找的基本概念,查找表(search table):具有同一类型数据元素(经常称为记录)的集合查找表的基本操作有:查找某个“特定”记录是否在表中查找到后取出某个“特定”记录的各个数据项向表中插入记录从表中删除记录,查找的基本概念,静态查找表(static search table):仅用于查询的查找表。动态查找表(dynamic search table):若在查找过程中需同时插入表中不存在的记录;或者需要删除记录,则称之为动态查找表。关键字/键
16、值(key):记录某个数据项的值,用其可以标示该记录当记录只有一个数据项时,其关键字即为该记录的值如果一个key可以唯一标示一个就,则称之为主关键字(primary key),否则称之为次关键字(secondary key),查找的基本概念,查找(search):在一个查找表中找出具有“特定”键值的那些记录所谓查找成功是指在查找表中找到了满足条件的记录,此时一般会返回找到的记录,或者返回记录的位置信息,或者仅仅返回找到(true)否则称为查找失败,此时一般返回空指针,或特殊值,或者仅仅返回没有找到(false),有时也会就此插入这个元素,Hash查找法,常见的Hash函数,哈希(Hash)函数
17、:在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应。这个对应关系f为哈希函数。按这个思想建立的表为哈希表。哈希函数的设定可以很灵活,只要使得任何关键字的哈希函数值都落在表长允许范围之内即可。,Hash查找法,常见的Hash函数,除留余数法选择一个适当的正整数P,用P去除关键字,取所得得余数作为散列地址,即:H(key)=key%P方法的关键是选取适当的P。选择P最好不要是偶数,也不要是基数的幂。一般地选P为小于或等于散列表长度m的某个最大素数比较好。缺点:整数相除速度较慢,Hash查找法,常见的Hash函数,如:m=8,16,32,64,1
18、28,256,512,1024P=7,13,31,61,127,251,503,1019,解决冲突的方法,对不同的关键字可能得到同一哈希地址,这种现象称冲突。具有相同函数值的关键字对该哈希函数来说称作同义词。在一般情况下,冲突只能尽可能的少,而不能完全避免。,解决冲突的方法,基本思想当冲突发生时,使用某种方法在散列表中形成一个探查序列(也称之为链),按此序列逐个单元的查找,直到找到一个指定的关键字或碰到一个开放的地址(单元为空)为止。Hj=(H(key)+dj)MOD m 1 j m-1;m为hash表长度dj为增量数列,各种方法的不同就区别在取不同的增量数列上,解决冲突的方法,常用的增量数列
19、:线性探测法二次探测法伪随机法再哈希法/二次哈希法桶式散列法,解决冲突的方法,线性探测法取dj=1,2,m-1将散列表看成是一个环形表。若地址为d(即H(key)=d)的单元发生冲突,则依次探查下述地址单元:d+1,d+2,.,m-1,0,1,.,d-1,直到找到一个空单元或查找到关键字为key的结点为止。若沿着该探查序列查找一遍之后,又回到了地址d,则无论是做插入操作还是做查找操作,都意味着失败。,例题,若待散列的序列为(18,25,63,50,42,32,9),哈希函数为H(key)=key MOD 9,哈希表长度为9,与18发生冲突的元素有_个答案:2,例题,已知一组关键字为(26,36
20、,41,38,44,15,68,12,06,51,25),用线性探查法解决冲突构造这组关键字的散列表,假设利用除余法构造散列函数。,例题答案,为了减少冲突,通常令装填因子1,在此我们取=0.75。因为n=11,所以散列表长度m=high(n/)=15;对于除余法,选P=13(小于15的最大素数),即散列函数为:H(key)=key%13。按顺序插入各个结点:26:H(26)=26/13=0 36:.=10,41:.=2,38:.=12,44:.=5插入15时,其散列地址为2,由于2已被关键字为41的元素占用,故需进行探查。按顺序探查法,显然3为开放地址,故可将其放在3单元。类似的,68和12可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSE 数据结构

链接地址:https://www.desk33.com/p-225286.html