用c语言编写以有序表表示的静态查找表中的折半查找的算法程序
时间: 2024-03-21 12:39:50 浏览: 62
折半排序-折半查找、排序算法讲解
好的,以下是用C语言编写的折半查找算法程序:
```
#include <stdio.h>
#define MAXSIZE 10 // 定义最大元素个数
typedef struct {
int data[MAXSIZE]; // 存储元素的数组
int length; // 元素个数
} SqList; // 定义静态查找表
// 折半查找算法
int binarySearch(SqList L, int key) {
int low = 0, high = L.length - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (L.data[mid] == key) {
return mid;
} else if (L.data[mid] > key) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1; // 如果未找到,返回-1
}
int main() {
SqList L = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, MAXSIZE}; // 初始化有序表
int key = 7; // 要查找的元素
int result = binarySearch(L, key);
if (result != -1) {
printf("查找成功,元素 %d 在表中的位置为 %d。\n", key, result);
} else {
printf("查找失败,元素 %d 不在表中。\n", key);
}
return 0;
}
```
程序中使用了静态查找表,即用数组实现的有序表。`binarySearch` 函数实现了折半查找算法,其中 `low` 和 `high` 分别指向表的第一个和最后一个元素,`mid` 表示中间位置。如果查找成功,返回元素在表中的位置,否则返回-1。在 `main` 函数中,初始化表和要查找的元素,调用 `binarySearch` 函数进行查找并输出结果。
阅读全文