#include <stdio.h>
int main()
{
int key, pos, a[100], n, i; // a[]顺序表
int Search_Ein(int s[], int n, int key); //折半查找函数声明
printf("请输入数组元素个数:");
scanf("%d", &n); //表长
printf("请输入(从小到大)所有数组元素:\n"); //有序
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
printf("请输入关键字:");
scanf("%d", &key);
pos = Search_Ein(a, n, key);
if (pos >= 0)
printf("查找成功!在第%d位!\n", pos + 1);
else
printf("查找失败!\n");
return 0;
}
int Search_Ein(int s[], int n, int key)
{
int low, high, mid;
low = 1;
high = n; //置区间初值
while (low <= high)
{
mid = (low + high) / 2; //计算中间元素序号
if (s[mid] == key) //找到待查元素
return mid;
else if (s[mid] > key) //中间元素大于关键字
high = mid - 1;
else
low = mid + 1;
}
return -1; //查找失败返回-1
}
折半查找(c语言)
于 2022-05-23 22:08:19 首次发布