二分查找
给定以下有序查找表,使用二分查找法分别查找关键字56与28是否存在于该查找表
5,9,15,18,22,25,26,38,42,45,56,56,66,69,75,78,80,83,92,99
#include <stdio.h>
typedef int ADT;
_Bool binary_search(const ADT arr[], unsigned len, ADT x)
{
int high=len-1,low=0;
while(low<=high)
{
int mid=(high+low)/2;
if(x<arr)
high=mid-1;
else if(arr<x)
low=mid+1;
else
return 1;
}
return 0;
}
int main(int argc, char *argv[])
{
ADT array[]={5,9,15,18,22,25,26,38,42,45,56,56,66,69,75,78,80,83,92,99};
printf("%d\n", binary_search(array, sizeof(array)/sizeof(array),56));
printf("%d\n", binary_search(array, sizeof(array)/sizeof(array),28));
return 0;
}
看看哪里错了呢 我觉得int mid=(high+low)/2; 应该为 int mid = low + (high - low) / 2; yinhaoyu 发表于 2021-7-7 17:37
我觉得int mid=(high+low)/2; 应该为 int mid = low + (high - low) / 2;
还是不太对emmmm 这个代码有问题吗?有什么问题?
人造人 发表于 2021-7-8 14:50
这个代码有问题吗?有什么问题?
代码没问题,得到结果不对,系统判断的 jia2770909743 发表于 2021-7-8 15:20
代码没问题,得到结果不对,系统判断的
在你那边得到了什么结果?
你认为什么结果是对的?
页:
[1]