查找算法实战
本部分通过动画可视化深入解析数据结构中的核心查找算法,从基础概念到高阶应用,全面覆盖顺序查找、折半查找及树形查找的核心原理与实现细节。文章以动态演示为核心工具,直观展现算法执行过程与数据结构演化,帮助读者突破抽象理论难点。
基础查找算法
7.2.1 题:折半查找的递归实现

题目要求: 出折半查找的递归算法。初始调用时,low 为 1, high 为 ST.length。
思路解析: 根据查找的起始位置和终止位置,将查找序列一分为二,判断所查找的关键字在哪一部分,然后用新的序列的起始位置和终止位置递归求解。这里要注意边界条件的处理,当 low > high 时说明查找失败。
核心代码实现:
typedef struct {
ElemType *elem; // 存储空间基址,建表时按实际长度分配,0 号留空
int length; // 表的长度
} SSTable;
int BinSearchRec(SSTable ST, ElemType key, int low, int high) {
if (low > high) return 0;
int mid = (low + high) / 2; // 取中间位置
if (key > ST.elem[mid]) { // 向后半部分查找
return BinSearchRec(ST, key, mid + 1, high);
} else if (key < ST.elem[mid]) { // 向前半部分查找
return BinSearchRec(ST, key, low, mid - 1);
} else { // 查找成功
return mid;
}
}





















