中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第7章 查找表

第7章查找表 ·7.1查找表的基本概念 ·7.2静态查找表 ·7.3动态查找表 ypb@ustc.edu.cn 中国科学技术大学
ypb@ustc.edu.cn 1 中国科学技术大学 第7章 查找表 • 7.1查找表的基本概念 • 7.2静态查找表 • 7.3动态查找表

7.1查找表的基本概念 查找表: 一由同一类元素或记录构成的集合。对数据元素间的关系未作限定。 对查找表的操作有 一查找某个“特定”的元素是否在表中。 一查找某个"特点” 的元素的各种属性。 在查找表中插入一个元素。 - 在查找表中删除一个元素 ·静态查找表、动态查找表 。 关键字 一数据元素中的某个数据项值。可以标识一个数据元素,如可以唯一 标识,则为主关键字(primary key)。 查找 一根据给定的某个值,在查找表中确定一个关键字等于给定值的数据 元素。若找到表示查找成功,返回该元素详细信息或在查找表中的 位置;否则返回NULL ypb@ustc.edu.cn 中国科学技术大学
ypb@ustc.edu.cn 2 中国科学技术大学 • 查找表: – 由同一类元素或记录构成的集合。对数据元素间的关系未作限定。 • 对查找表的操作有 – 查找某个“特定”的元素是否在表中。 – 查找某个“特点”的元素的各种属性。 – 在查找表中插入一个元素。 – 在查找表中删除一个元素 • 静态查找表、动态查找表 • 关键字 – 数据元素中的某个数据项值。可以标识一个数据元素,如可以唯一 标识,则为主关键字(primary key)。 • 查找 – 根据给定的某个值,在查找表中确定一个关键字等于给定值的数据 元素。若找到表示查找成功,返回该元素详细信息或在查找表中的 位置;否则返回NULL 7.1查找表的基本概念

7.2静态查找表 typedef struct{ Datatype data; ∥元素数据 KeyType key; /元素关键字 }Elemtype;:/数据元素类型 typedef struct{ Elemtype *elem: /约定从下标1开始 int len; }StaticSrhTable;顺序静态查找表类型 ypb@ustc.edu.cn 3 中国科学技术大学
ypb@ustc.edu.cn 3 中国科学技术大学 7.2静态查找表 typedef struct{ Datatype data; //元素数据 KeyType key; //元素关键字 }Elemtype; //数据元素类型 typedef struct{ Elemtype *elem; //约定从下标1开始 int len; }StaticSrhTable; //顺序静态查找表类型

>顺序查找 算法7.1 int SeqSearch(StaticSrhTable SST,KeyType kval) /*在顺序表SST中顺序查找关键字为kval的记录。 若找到,则返回记录在表中的位序;否则,返回0*/ SST.elem[0].key =kval; ∥放置监视哨 for(i=SST.len,SST.elem[i.key=kval;i-);∥查找 return i; ∥查找结果 ypb@ustc.edu.cn 4 中国科学技术大学
ypb@ustc.edu.cn 4 中国科学技术大学 ➢ 顺序查找 算法7.1 int SeqSearch(StaticSrhTable SST, KeyType kval) { /* 在顺序表SST中顺序查找关键字为kval的记录。 若找到,则返回记录在表中的位序;否则,返回0 */ SST.elem[0].key = kval; // 放置监视哨 for (i = SST.len; SST.elem[i].key != kval; i--); // 查找 return i; // 查找结果 }

·例7.1在顺序查找表中查找成功和失败 平均查找长度 一查找过程中先后和给定值进行比较的关键字的个 数的期望值 ASL=∑PCi∑P=1i=1,2,。。 。。n C=n-i+1P:=1/m ASLss=1/n∑(n-i+1)=(n+1)/2 ypb@ustc.edu.cn 5 中国科学技术大学
ypb@ustc.edu.cn 5 中国科学技术大学 • 例7.1在顺序查找表中查找成功和失败 • 平均查找长度 – 查找过程中先后和给定值进行比较的关键字的个 数的期望值 ASL=∑PiCi ∑Pi=1 i=1,2,。。。。。n Ci=n-i+1 Pi=1/n ASLss=1/n∑(n-i+1)=(n+1)/2

>二分查找(顺序有序表 二分查找(binary Search):也称折半查找。 int BinSearch(StaticSrhTable SST,KeyType kval){ bot=1,top=SST.len; /置查找范围初值 while(botkval)top=mid-l;/前半区 else bot =mid+1; /后半区 } return 0; /未查找到 ypb@ustc.edu.cn 6 中国科学技术大学
ypb@ustc.edu.cn 6 中国科学技术大学 ➢ 二分查找 (顺序有序表) 二分查找(binary Search):也称折半查找。 int BinSearch(StaticSrhTable SST, KeyType kval){ bot=1, top=SST.len; // 置查找范围初值 while(botkval) top=mid-1;//前半区 else bot =mid+1; // 后半区 } } return 0; // 未查找到 }

二分查找平均查找长度(假设满二叉树) ASLps=(n+1)/nlog(n+1)-1 ASLbs=-(20+21*2+.+21*h)Pi=员∑i*2-1(m=2h1) 令:S=hi*2-1=2i*2-2t+! 2∑b-1(t+1)2t-1 =20-1t*2t-1+2∑8-12t-1 =2(∑1t*2t-1-h*2h-1)+∑8-12 =2(S-h*2h-1)+2h-1 所以:S=h*2h-2h+1=(n+1)log2(n+1)-n ASLS=mtog2(0m+1)-1 ypb@ustc.edu.cn 中国科学技术大学
ypb@ustc.edu.cn 7 中国科学技术大学 二分查找平均查找长度(假设满二叉树) ASLbs=(n+1)/nlog(n+1)-1 ASLbs=(2 0+2 1*2+…+2 h-1*h)Pi=

索引(分块)查找 又称索引顺序查找 一介于顺序查和折半查找之间。适合于关键字分块有序 typedefstruct{ KeyType key; int stadr; }indexItem; typedefstruct{ indexItem *elem; int length; }indexTable; 设索引长度b,顺序表长度为n,则: ASLidx=ASL(b)+ASL(n/b)~log2(b+1)-1+(n/b+1)/2 ypb@ustc.edu.cn 8 中国科学技术大学
ypb@ustc.edu.cn 8 中国科学技术大学 • 又称索引顺序查找 – 介于顺序查和折半查找之间。适合于关键字分块有序 typedefstruct { KeyType key; int stadr; }indexItem; typedefstruct{ indexItem *elem; int length; }indexTable; 设索引长度b,顺序表长度为n,则: ASLidx=ASL(b)+ASL(n/b)≈log2 (b+1)-1+(n/b+1)/2 索引(分块)查找

state BlkInxSearch(StaticSrhTable SST,InxTab Inx,KeyType kval){ bot=1,top=Inx.len,blFound=FALSE;∥置查找范围初值 if(kval>lnx.elem[top].key)return 0;∥越界 while (bot kva)top=mid-1;W前半区 else bot=mid +1; ∥后半区 }退出循环时,bot所指的为所找的块 bn=lnx.elem[bot].StartAdd;W第bot块的数据记录起始地址 if (bot Inx.len)en Inx.elem[bot 1].StartAdd-1; else en SST.len; ∥第bot块的数据记录尾地址 for (i bn;(i<=en)&&(SST.elem[i].key !kval);i++); if (i <en)return i; return 0; 川未查找到
state BlkInxSearch(StaticSrhTable SST, InxTab Inx, KeyType kval){ bot = 1, top = Inx.len, blFound = FALSE; // 置查找范围初值 if (kval > Inx.elem[top].key) return 0; // 越界 while (bot kval) top = mid - 1; // 前半区 else bot = mid + 1; // 后半区 } } //退出循环时,bot所指的为所找的块 bn = Inx.elem[bot].StartAdd; //第bot块的数据记录起始地址 if (bot < Inx.len) en = Inx.elem[bot + 1].StartAdd – 1; else en = SST.len; //第bot块的数据记录尾地址 for (i = bn; (i <= en) && (SST.elem[i].key != kval); i++); if (i <= en) return i; return 0; //未查找到 } 为什么选择bot 而不是top?

索引顺序查找 索引表 块内最大关键字 17 26 48 76 96 块的起始序号 8 15 18 SST.elem 171016 8 212623473040 32 48422976 5268 8696 82 01234567891011121314151617181920 ypb@ustc.edu.cn 10 中国科学技术大学
ypb@ustc.edu.cn 10 中国科学技术大学 索引顺序查找 索引表 17 26 48 76 96 1 5 8 15 18 块内最大关键字 块的起始序号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 17 10 16 8 21 26 23 47 30 40 32 48 42 29 76 52 68 86 96 82 SST.elem
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第8章 排序.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第6章 图.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第5章 二叉树和树.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第1章 数据结构导论(主讲:袁平波).pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第4章 串和数组.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第3章 栈和队列.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第2章 线性表.pps
- 《数据库基础》课程教学资源(参考资料)数据库在虚拟机CentOS上安装部署openGauss数据库指导手册.pdf
- 《数据库基础》课程教学资源(参考资料)数据库在虚拟机openEuler上安装部署openGauss数据库指导手册(openEuler-openGauss).pdf
- 《数据库基础》课程教学资源(PPT课件讲稿)Delphi 7.0开发示例.pps
- 中国科学技术大学:《数据库基础》课程教学资源(PPT课件讲稿)第六章 数据库设计、第七章 关系数据库管理系统实例、第八章 现代数据库技术及进展.pps
- 中国科学技术大学:《数据库基础》课程教学资源(PPT课件讲稿)第五章 数据库的保护.pps
- 中国科学技术大学:《数据库基础》课程教学资源(PPT课件讲稿)第三章 关系数据库标准查询语言SQL.pps
- 中国科学技术大学:《数据库基础》课程教学资源(PPT课件讲稿)第四章 关系数据库设计理论.pps
- 中国科学技术大学:《数据库基础》课程教学资源(PPT课件讲稿)第二章 关系数据库.pps
- 中国科学技术大学:《数据库基础》课程教学资源(PPT课件讲稿)第一章 绪论(主讲:袁平波).pps
- 广东茂名农林科技职业学院:电子商务专业人才培养方案(2019级).pdf
- 南京农业大学:《面向对象程序设计实验》课程教学大纲 Experiment in Object-Oriented Programming.pdf
- 广东茂名农林科技职业学院:动漫制作技术专业人才培养方案(2020级).pdf
- 广东茂名农林科技职业学院:计算机网络技术专业人才培养方案(2021级).pdf
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)基本算法和经典问题选讲(主讲:袁平波).pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)部分排序算法.pdf
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)二叉平衡树旋转.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(试卷习题)习题集(无答案).pdf
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第一章 绪论(主讲:袁平波).pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第二章 线性表.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第三章 栈和队列.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第四章 串和数组.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第五章 数组.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第六章 二叉树和树.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第七章 图.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第十章 排序.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第九章 查找表.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第一章 绪论(主讲:袁平波).pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第二章 关系数据库.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第三章 关系数据库标准查询语言SQL.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第四章 关系数据库设计理论.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第五章 数据库的保护.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第六章 数据库设计.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(试卷习题)数据结构习题(无答案).pdf