运算符重载精.ppt
《运算符重载精.ppt》由会员分享,可在线阅读,更多相关《运算符重载精.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、运算符重载第1页,本讲稿共55页10.1 10.1 查找的基本概念查找的基本概念 查找查找:查询查询关键字关键字是否在是否在(数据元素集合)表中的过程。也称作数据元素集合)表中的过程。也称作检索检索。主关键字主关键字:能够惟一区分各个不同数据元素的关键字能够惟一区分各个不同数据元素的关键字次关键字次关键字:通常不能惟一区分各个不同数据元素的关键字通常不能惟一区分各个不同数据元素的关键字查找成功查找成功:在数据元素集合中找到了要查找的数据元素在数据元素集合中找到了要查找的数据元素查找不成功查找不成功:在数据元素集合中没有找到要查找的数据元素在数据元素集合中没有找到要查找的数据元素静态查找静态查找
2、:只查找,不改变数据元素集合内的数据元素只查找,不改变数据元素集合内的数据元素动态查找动态查找:既查找,又改变(增减)集合内的数据元素既查找,又改变(增减)集合内的数据元素静态查找表静态查找表:静态查找时构造的存储结构静态查找时构造的存储结构动态查找表动态查找表:动态查找时构造的存储结构动态查找时构造的存储结构平均查找长度平均查找长度:查找过程所需进行的关键字比较次数的平均值查找过程所需进行的关键字比较次数的平均值,是衡量查找算法效率的是衡量查找算法效率的最主要标准最主要标准,其数学定义为:其数学定义为:第2页,本讲稿共55页10.2 10.2 静态查找表静态查找表 静态查找表主要有三种结构:
3、静态查找表主要有三种结构:顺序表顺序表 有序顺序表有序顺序表 索引顺序表索引顺序表第3页,本讲稿共55页1.1.顺序表顺序表 在顺序表上查找的在顺序表上查找的基本思想是:基本思想是:从顺序表的一端开始,用给定数从顺序表的一端开始,用给定数据元素的关键字逐个和顺序表中各数据元素的关键字比较,若在顺据元素的关键字逐个和顺序表中各数据元素的关键字比较,若在顺序表中查找到要查找的数据元素,则查找成功,函数返回该数据元序表中查找到要查找的数据元素,则查找成功,函数返回该数据元素在顺序表中的位置;否则查找失败,函数返回素在顺序表中的位置;否则查找失败,函数返回-1-1。查找函数设计如下:查找函数设计如下:
4、intSeqSearch(DataTypea,intn,KeyTypekey)/在在a0-an-1中顺序查找关键码为中顺序查找关键码为key的数据元素的数据元素/查找成功时返回该元素的下标序号;失败时返回查找成功时返回该元素的下标序号;失败时返回-1inti=0;while(in&ai.key!=key)i+;if(ai.key=key)returni;elsereturn-1;第4页,本讲稿共55页算法分析算法分析查找成功时的平均查找长度查找成功时的平均查找长度ASLASL成功成功为:为:查找失败时的平均查找长度查找失败时的平均查找长度ASLASL失败失败为为 时间效率为时间效率为O(n)第
5、5页,本讲稿共55页2.2.有序顺序表有序顺序表 有序顺序表上的查找算法主要有有序顺序表上的查找算法主要有顺序查找顺序查找和和折半查找折半查找两种方法。两种方法。一、顺序查找一、顺序查找有序顺序表上的顺序查找算法和顺序表上的查找算法方法类同有序顺序表上的顺序查找算法和顺序表上的查找算法方法类同 二、二分查找(二、二分查找(又称又称折半查找)折半查找)算法的基本思想:算法的基本思想:先给数据排序先给数据排序(例如按升序排好),形成(例如按升序排好),形成有序表,有序表,然后再将然后再将keykey与与正中正中元素相比,若元素相比,若keykey小,则缩小至前半部内查找;再小,则缩小至前半部内查找
6、;再取其取其中值中值比较,每次缩小比较,每次缩小1/21/2的范围,直到查找成功或失败为止。的范围,直到查找成功或失败为止。反之,如果反之,如果keykey大,则缩小至后半部内查找。大,则缩小至后半部内查找。第6页,本讲稿共55页二分查找算法如下:二分查找算法如下:intBiSearch(DataTypea,intn,KeyTypekey)/在有序表在有序表a0-an-1中二分查找关键码为中二分查找关键码为key的数据元素的数据元素/查找成功时返回该元素的下标序号;失败时返回查找成功时返回该元素的下标序号;失败时返回-1intlow=0,high=n-1;/确定初始查找区间上下界确定初始查找区
7、间上下界intmid;while(low=high)mid=(low+high)/2;/确定查找区间中心下标确定查找区间中心下标if(amid.key=key)returnmid;/查找成功查找成功elseif(amid.keykey)low=mid+1;elsehigh=mid-1;return-1;/查找失败查找失败第7页,本讲稿共55页算法分析算法分析查找成功时的平均查找长度查找成功时的平均查找长度ASLASL成功成功为:为:查找失败时的平均查找长度查找失败时的平均查找长度ASLASL失败失败为为 第8页,本讲稿共55页3.3.索引顺序表索引顺序表 当顺序表中的数据元素个数非常大时,采用
8、当顺序表中的数据元素个数非常大时,采用在顺序表上建立索引表在顺序表上建立索引表的办法提高查找速度。把要在其上建立索引表的顺序表称作的办法提高查找速度。把要在其上建立索引表的顺序表称作主表主表。主表。主表中存放着数据元素的中存放着数据元素的全部信息全部信息,索引表中只存放主表中要查找数,索引表中只存放主表中要查找数据元素的据元素的主关键字和索引信息主关键字和索引信息。8146910223418193140385466467178688085140034516610285153keylink下标下标索引表索引表012345678910111213141516171819key其它域其它域位置位置主
9、表主表索引表结构图索引表结构图 索索引引表表中中的的数数据据元元素素由由两两个个域域构构成成,keykey域域为为被被索索引引的的若若干干个个数数据据元元素素中中关关键键字字的的最最大大值值,linklink域域为为被被索索引引的的若若干干个个数数据据元元素素中中第第一一个个数数据据元元素的位置编号。素的位置编号。第9页,本讲稿共55页完全索引表完全索引表:和主表项完全相同,但只包含索引关键字和该数据元和主表项完全相同,但只包含索引关键字和该数据元素在主表中位置信息的索引表素在主表中位置信息的索引表二级索引表二级索引表:当主表中的数据元素个数非常庞大时,按照建立索引表的同当主表中的数据元素个数
10、非常庞大时,按照建立索引表的同样方法对索引表再建立的索引表。二级以上的索引结构称作样方法对索引表再建立的索引表。二级以上的索引结构称作多级索引结多级索引结构构等长索引表等长索引表:索引表中的每个索引项对应主表中的数据元素个数相等索引表中的每个索引项对应主表中的数据元素个数相等;反之反之称为称为不等长索引表不等长索引表。不等长索引表中的。不等长索引表中的索引长度索引长度可随着动态插入和动可随着动态插入和动态删除过程改变态删除过程改变,因此不仅适用于因此不仅适用于静态查找静态查找问题,而且也适用于问题,而且也适用于动态查动态查找找问题。问题。相关术语相关术语第10页,本讲稿共55页 假假设设索索引
11、引表表的的长长度度为为m m,主主表表中中每每个个子子表表的的长长度度为为s s,并并假假设设在在索索引引表表上上和和在在主主表表上上均均采采用用顺顺序序查查找找算算法法,则则索索引引顺顺序序表表上上查查找找算算法法的的平均查找长度平均查找长度为:为:算法分析算法分析第11页,本讲稿共55页10.3 10.3 动态查找表动态查找表 动态查找表主要有动态查找表主要有二叉树结构二叉树结构和和树结构树结构两种类型。二叉树结构两种类型。二叉树结构有有二叉排序树、平衡二叉树二叉排序树、平衡二叉树等。树结构有等。树结构有B-B-树、树、B B+树树等。等。1.1.1.1.二叉排序树二叉排序树二叉排序树二叉
12、排序树一、基本概念一、基本概念一、基本概念一、基本概念-或是一棵空树;或者是具有如下性质的非空二叉树:或是一棵空树;或者是具有如下性质的非空二叉树:(1 1)左子树的所有结点均小于根的值;)左子树的所有结点均小于根的值;(2 2)右子树的所有结点均大于根的值;)右子树的所有结点均大于根的值;(3 3)它的左右子树也分别为二叉排序树。)它的左右子树也分别为二叉排序树。第12页,本讲稿共55页3811241094039454035190146476760445600800下图所示就是一棵二叉排序树下图所示就是一棵二叉排序树 第13页,本讲稿共55页二、二叉排序树类二、二叉排序树类二、二叉排序树类二
13、、二叉排序树类定义如下:定义如下:templateclassBiSearchTree/输出流运算符重载输出流运算符重载friendistream&operator(istream&in,BiSearchTree*&tree);private:BiTreeNode*root;/根指针根指针voidInsert(BiTreeNode*&ptr,constT&item);/插入插入voidDelete(BiTreeNode*&ptr,constT&item);/删除删除/前序、中序和后序遍历,访问操作为前序、中序和后序遍历,访问操作为Visit()函数函数voidPreOrder(BiTreeNod
14、e*&t,void(*Visit)(Titem);voidInOrder(BiTreeNode*&t,void(*Visit)(Titem);voidPostOrder(BiTreeNode*&t,void(*Visit)(Titem);第14页,本讲稿共55页public:/构造函数和析构函数构造函数和析构函数BiSearchTree():root(NULL);/注意:生成的二叉排序树不带根结点注意:生成的二叉排序树不带根结点BiSearchTree();BiTreeNode*Find(constT&item);/查找查找voidInsert(constT&item)/插入插入Insert(
15、GetRoot(),item);voidDelete(constT&item)/删除删除Delete(GetRoot(),item);BiTreeNode*&GetRoot()/取树根取树根returnroot;第15页,本讲稿共55页BiTreeNode*&LeftChild(BiTreeNode*¤t)/取左孩子结点取左孩子结点returnroot!=NULL?current-Left():NULL;BiTreeNode*&RightChild(BiTreeNode*¤t)/取右孩子结点取右孩子结点returnroot!=NULL?current-Right():N
16、ULL;voidPreOrder(void(*Visit)(Titem)/前序遍历前序遍历PreOrder(root,Visit);voidInOrder(void(*Visit)(Titem)/中序遍历中序遍历InOrder(root,Visit);voidPostOrder(void(*Visit)(Titem)/后序遍历后序遍历PostOrder(root,Visit);第16页,本讲稿共55页三、查找算法三、查找算法 二叉排序树上的查找过程,就是遍历二叉排序树并在遍历过程二叉排序树上的查找过程,就是遍历二叉排序树并在遍历过程中寻找要查找的数据元素是否存在。中寻找要查找的数据元素是否存在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 运算 重载
限制150内