第8章查找A剖析
数据结构课程的内容 第8章 查找 8.1 基本概念 讨论: (4)如何评估查找方法的优劣? 8.2 静态查找表 一、顺序查找( Linear search,又称线性查找 ) (2)算法的实现: 讨论① 查不到怎么办? 二、折半查找(又称二分查找或对分查找) 折半查找举例: 讨论① 若关键字不在表中,怎样得知和停止? 平均每个数据的查找时间还要除以n,所以: 折半查找效率分析法2(参见教材P220): 三、静态树表的查找 四、分块查找(索引顺序查找) 查找步骤分两步进行: 8.2 动态查找表 一、二叉排序树的定义 二、二叉排序树的插入与删除 讨论1:二叉排序树的插入和查找操作 二叉排序树的查找插入算法如何实现? 讨论2:二叉排序树的删除操作 *p有两棵子树时,如何进行删除操作? 例:请从下面的二叉排序树中删除结点P。 三、二叉排序树的查找分析 最好情况:即:与折半查找中的判定树相同(形态比较均衡) * 8.1 基本概念 8.2 静态查找表 8.3 动态查找表 8.4 哈希表 教材第8、11和12章省略,因《操作系统》课程会涉及。 ——若表中存在特定元素,称查找成功,应输出该记录; ——否则,称查找不成功(也应输出失败标志或失败位置) 查找表 查 找 查找成功 查找不成功 静态查找 动态查找 关键字 主关键字 次关键字 ——由同一类型的数据元素(或记录)构成的集合。 ——查询(Searching)特定元素是否在表中。 ——只查找,不改变集合内的数据元素。 ——既查找,又改变(增减)集合内的数据元素。 ——记录中某个数据项的值,可用来识别一个记录 ( 预先确定的记录的某种标志 ) ——可以唯一标识一个记录的关键字 例如“学号” 例如“女” 是一种数据结构 ——识别若干记录的关键字 (2)对查找表常用的操作有哪些? 查询某个“特定的”数据元素是否在表中; 查询某个“特定的”数据元素的各种属性; 在查找表中插入一元素; 从查找表中删除一元素。 (3) 有哪些查找方法? 查找方法取决于表中数据的排列方式; (1)查找的过程是怎样的? 给定一个值K,在含有n个记录的文件中进行搜索,寻找一个关键字值等于K的记录,如找到则输出该记录,否则输出查找不成功的信息。 例如查字典 针对静态查找表和动态查找表的查找方法也有所不同。 “特定的”=关键字 明确:查找的过程就是将给定的K值与文件中各记录的关键字项进行比较的过程。所以用比较次数的平均值来评估算法的优劣。称为平均查找长度(ASL:average search length)。 其中: n是文件记录个数; Pi是查找第i个记录的查找概率(通常取等概率,即Pi =1/n); Ci是找到第i个记录时所经历的比较次数。 统计意义上的数学期望值 物理意义:假设每一元素被查找的概率相同,则查找每一元素所需的比较次数之总和再取平均,即为ASL。 显然,ASL值越小,时间效率越高。 针对静态查找表的查找算法主要有: 静态查找表的抽象数据类型参见教材P216。 一、顺序查找(线性查找) 二、折半查找(二分或对分查找) 三、静态树表的查找 四、分块查找(索引顺序查找) (1)顺序表的机内存储结构: typedef struct { ElemType *elem; //表基址,0号单元留空。表容量为全部元素 int length; //表长,即表中数据元素个数 }SSTable; 顺序查找:即用逐一比较的办法顺序查找关键字,这显然是最直接的办法。 对顺序结构如何线性查找?见下页之例或教材P216; 对单链表结构如何线性查找?函数虽未给出,但也很容易编写;只要知道头指针head就可以“顺藤摸瓜”; 对非线性树结构如何顺序查找?可借助各种遍历操作! 技巧:把待查关键字key存入表头或表尾(俗称“哨兵”),这样可以加快执行速度。 例: 若将待查找的特定值key存入顺序表的首部(如0号单元),则顺序查找的实现方案为:从后向前逐个比较! int Search_Seq( SSTable ST , KeyType key ){ //在顺序表ST中,查找关键字与key相同的元素;若成功,返回其位置信息,否则返回0 ST.elem[0].key =key; //设立哨兵,可免去查找过程中每一步都要检测是否查找完毕。当n1000时,查找时间将减少一半。 for( i=ST.length; ST.elem[ i ].key!=key; - - i ); //不要用for(i=n; i0;
您可能关注的文档
- 第8章信用风险管理--.ppt
- 和田地区建设工程质量监督管理工作手册(打印版)完成.docx
- 和田地区建设局底商住宅楼工程2010042323:07:14副本.doc
- 第8章其他射线检测方法和技术(文).ppt
- 和声为旋律配和声.ppt
- 和田地区红枣产业化发展现状及对策分析(二稿老师修改).doc
- 第8章函数--C语言程序设计(谭浩强第三版).ppt
- 第8章_配位化合物.ppt
- 第8章..螺纹紧固件和常用件-机械制图.ppt
- 第8章各类反应的动力学.ppt
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 2025年陕西省汉中市某中学小升初入学分班考试英语考试真题含答案.docx VIP
- DB31T 1236-2020 未成年人司法社会工作服务规范.docx VIP
- 宣贯培训(2026年)《DLT 2772—2024火力发电厂输煤廊道巡检装置技术规范》.pptx VIP
- 2026年北京中考白皮书.pdf VIP
- 2025届苏锡常镇高三(一模)数学试题及参考答案.pdf VIP
- 《人工智能辅助的翻译技术》课件.ppt VIP
- 沉浸式非遗体验—宋代点茶.pptx VIP
- PET Complete精品教学课件 unit 3 having fun.pptx
- 年产2万吨马铃薯全粉项目可行性研究报告.docx
- 《计算机网络基础》课件——OSI参考模型.pptx VIP
原创力文档

文档评论(0)