您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 第5章 常用算法――查找
零基础学算法第5章:常用算法——查找课程安排•5.1查找的基本概念•5.2简单查找•5.3二叉排序树•5.4索引查找•5.5哈希表5.1查找的基本概念•主关键字和次关键字•查找结果•静态查找表和动态查找表5.2简单查找•顺序查找从线性表的一端开始,依次将每个记录的关键字与给定值进行比较,若某个记录的关键字等于给定值,表示查找成功,返回记录序号;若将线性表中所有记录都比较完,仍未找到关键字与给定值相等的记录,则表示查找失败,返回一个失败值。•折半查找又称为二分查找。这种查找方法要求查找表的数据是线性结构保存,并且还要求查找表中的数据是按关键字由小到大有序排列。6965903792628545.2简单查找•折半查找mid第1次6122837546569839092mid第2次6122837546569839092mid第3次6122837546569839092mid第4次61228375465698390925.3二叉排序树二叉排序数或者是一棵空树,或者是一棵具有以下性质的二叉树:(1)若它有左子树,则左子树上所有结点的数据均小于根结点的数据。(2)若它有右子树,则右子树上所有结点的数据均大于根结点的数据。(3)左、右子树本身又各是一棵二叉排序树。5.3.1二叉排序树的定义54658390669123792285.3二叉排序树•插入结点•查找结点•删除结点54928369665123790285492838365379028删除结点删除后上移结点6125.3二叉排序树•插入结点•查找结点•删除结点5.3二叉排序树•删除叶结点5492836966512379028549283696512379028删除结点删除后5.3二叉排序树•删除无右子树结点549283696651237902854928369656379028删除结点删除后5.3二叉排序树•删除有左右子树结点54928369665123790285492838365379028删除结点删除后上移结点6125.4索引查找•主表和索引表•创建索引的一般过程•索引的特点5.4.1索引的概念5.4索引查找•在索引表中进行查找引查找的过程是:(1)首先根据给定的关键字key,按定义的函数计算出索引值index1,在索引表上查找出索引值等于index1的索引项,以确定对应子表在主表中的开始位置和长度,(2)接着根据从索引表中获取的开始序号start,在主表指定位置(即子表的开始处)顺序查找关键字key。•向主表中插入数据在线性表的索引存储结构上进行插入和删除运算的算法,与查找算法类似,其具体过程如下:(1)根据待插入元素的值查找索引表,确定出对应的子表。(2)接着,根据待插入元素的关键字,在该子表中做插入元素的操作。(3)插入完成后,修改索引表中的相应子表的长度。5.4.1索引查找算法5.5哈希表哈希表的基本思想是:以线性表中每个元素的关键字key为自变量,通过一定的函数关系h(key)计算出函数的值,把这个值作为数组的下标,将元素存入对应的数组元素中。函数h(key)称为哈希函数,函数的值称为哈希地址。5.5.1哈希表概述69,65,90,37,92,6,28,54h(key)=key%1365922869637901234567891011120线性表:哈希函数:5.5哈希表•直接定址法•除法取余法•数字分析法•平方取中法•折叠法5.5.2构造哈希函数5.5哈希表•开放地址法–线性探测法–双哈希函数探测法5.5.3处理冲突6592285469637901234567891011120•链接法65922869637901234567891011120∧∧∧∧∧∧∧∧∧∧∧∧54∧性格决定命运,专注成就人生
本文标题:第5章 常用算法――查找
链接地址:https://www.777doc.com/doc-3298413 .html