N个有序整数已放在一维数组中。采用函数利用折半查找算法查找整数m在数组中的位置。若找到返回其下标值;反之,返回-1。编写主函数实现函数调用。
#include<stdio.h>
int fun(int a[], int h)
{
int left = 0, right = 6, mid = (left + right) / 2;
while (left <= right)
{
if (a[mid] == h)
{
return mid;
}
else if (a[mid] < h)
{
left = mid + 1;
mid = (left + right) / 2;
}
else if (a[mid] > h)
{
right = mid - 1;
mid = (left + right) / 2;
}
}
if (left > right) return -1;
}
int main()
{
int a[100], i = 0, s, h;
printf("请按顺序输入一串数字:");
for (i = 0; i < 7; i++)
{
scanf_s("%d", &a[i]);
}
printf("请输入目标数字:");
scanf_s("%d", &h);
s = fun(a, h);
printf("%d", s);
return 0;
}