编写折半查找算法。 int BinSearch(STable ST, KeyType key)
时间: 2024-02-15 21:04:04 浏览: 58
折半查找算法
好的,以下是折半查找算法的代码实现:
```
typedef struct {
KeyType key;
// 其他数据项
} ElemType;
typedef struct {
ElemType *elem;
int length;
} STable;
int BinSearch(STable ST, KeyType key) {
int low = 1, high = ST.length;
while (low <= high) {
int mid = (low + high) / 2;
if (ST.elem[mid].key == key) {
return mid; // 查找成功
} else if (ST.elem[mid].key > key) {
high = mid - 1; // 在左半部分查找
} else {
low = mid + 1; // 在右半部分查找
}
}
return 0; // 查找失败
}
```
其中,`STable` 为顺序表数据结构,`ElemType` 为数据元素类型,包含 `key` 和其他数据项。`BinSearch` 函数接收一个 `STable` 类型的顺序表和一个 `KeyType` 类型的关键字 `key`,返回查找到的元素下标,未找到返回0。具体实现是利用折半思想,每次将查找区间缩小一半,直到找到目标元素或者查找区间为空。在每次缩小区间时,判断目标元素是否在左半部分或者右半部分,以此来缩小查找区间。
阅读全文