数据结构七章精华:查找笔记(Hashing与ASL详解)

需积分: 10 0 下载量 103 浏览量 更新于2024-08-05 收藏 21KB MD 举报
本笔记主要关注于数据结构课程中的查找算法,特别是在第七章中对查找技术的深入探讨,特别提到了两种查找方法:静态查找和动态查找。静态查找(Staticssearchlist)主要用于已知不变的数据集合,而动态查找(Dynamicsearchlist)允许在操作过程中进行插入、删除和查找,强调了关键字的标识。 - **静态查找**:这部分首先定义了几个关键字类型,包括数字型和字符型的关键字。对于数字型,使用`EQ`、`LT`和`LQ`宏来判断相等、小于和小于等于的关系,而对于字符型,利用`strcmp`函数进行比较。这些定义有助于实现高效的查找操作。 - **动态查找**:这里的动态查找列表允许对数据进行动态管理,通过改变`key`的值,可以在列表中查找特定元素。在查找过程中,算法采用了二分查找的思想,使用`low`和`high`指针进行递归搜索,直到找到目标元素或确定其不存在。 - **平均查找长度(ASL)**:ASL是衡量查找效率的一个指标,计算公式涉及每个元素的查找概率和对应的操作次数。对于顺序查找,ASL为`(n+1)/2`,而等概率情况下,二分查找的ASL更优,因为每次查找都将搜索范围减半。 - **查找分析**:讲解了查找算法的基本分析,顺序查找的最坏、最好和平均情况分别是n次、1次和(n+1)/2次。二分查找则在最坏情况下也能达到对数时间复杂度,提高了查找效率。 - **具体实现**:给出了二分查找的C++代码片段,展示了在升序数组中查找特定键值的过程。这个函数首先初始化`low`和`high`,然后不断将搜索区间缩小,直到找到目标元素或确定其不在数组中。 总结来说,本章节详细讨论了数据结构中的查找算法,涵盖了静态查找列表的高效比较方法、动态查找的查找过程,以及平均查找长度的概念。通过顺序查找和二分查找这两种查找方式的对比,突出了动态查找的优越性,特别是对于大型数据集的处理。此外,理解查找算法的时间复杂度和优化策略对于提高程序性能至关重要。