第七章学习小结

本章学习了几种查找的方法,顺序查找、折半查找、二叉排序树查找、哈希表。

对于几种查找的特点,顺序查找的算法简单但是查找效率低,折半查找对结构要求高,同时查找效率也高,二叉排序树查找的数据结构采用二叉链表,删除和插入操作只需要移动指针。

线性表的查找介绍了顺序查找、折半查找、分块查找。

顺序查找比较简单直观,但是通过设置监视哨这个技巧可以免去查找过程中每一步都要检测整个表是否查找完毕这样一个操作,可以节省很多平均时间。

折半查找的效率高,但是只能对有序的顺序表进行操作。

分块查找将表分为多个子表,对每个子表建立一个索引项,记录子表最大关键字和起始地址,保证后一个子表的所有关键字均大于前一个子表中的最大关键字,就可以根据给定的key在相应范围内的子表中查找

树表的查找对二叉排序树和平衡二叉树有不同的几点操作和注意事项。

对于二叉排序树来说,要满足几点:左子树不空时左子树上所有节点的值均小于它的根节点的值;右子树不空时,右子树上所有结点的值均大于它的根节点的值;左右子树也分别为二叉排序树。

对于平衡二叉树来说,要满足:左子树和右子树深度差的绝对值不超过1;左子树右子树均为平衡二叉树。

散列法存储的基本思想:建立关键码字与其存储位置的对应关系,或者说,由关键码的值决定数据的存储地址。查找速度极快(O(1)),查找效率与元素个数n无关。

哈希方法:选取某个函数,依该函数按关键字计算元素的存储位置,并按此存放;查找时,由同一个函数对给定值k计算地址,将k与地址单元中元素关键码进行比较,确定查找是否成功。

哈希函数:哈希方法中使用的转换函数称为哈希函数。

哈希表:按上述思想构造的表称为哈希表。

冲突:通常关键码的集合比哈希地址集合大得多,因而经过哈希函数变换后,可能将不同的关键码映射到同一个哈希地址上,这种现象称为冲突。

在哈希查找方法中,冲突是不可能避免的,只能尽可能减少。

处理方法有开放地址法和链地址法;
1.开放地址主要有线性探测和二次探测,即在发生冲突时,从发生冲突地址的下一单元出发寻找空单元,这两种方法只是间隔不同。
2.链地址法:即把具有相同散列地址的记录放在同一个单链表中。

相关推荐