gpt4 book ai didi

c - 二分查找输出错误

转载 作者:行者123 更新时间:2023-11-30 17:14:31 25 4
gpt4 key购买 nike

我正在使用二分搜索算法在预定义数组中查找数字,但是如果我输入数组中已经存在的值,我会得到正确的答案,但是在输入不在数组中的值(例如 101,100,121)时,我只会得到数字 10 作为输出

#include <stdio.h>

int binarysearch(int A[],int key);

int main()
{
int key,answer;
int A[10]={0,5,8,10,12,14,15,18,19,21};
scanf("%d",&key);
answer=binarysearch(A,key);
if (answer!=-1)
{
printf("%d",answer);
}
else
{
puts("NOT FOUND");
}
}

int binarysearch(int A[],int key)
{
int i;
int h,l,m;
h=10;
l=0;

while(l<=h)
{
m=(h+l)/2;
if(A[m]==key)
{
return m;
}
else if(key<A[m])
{
h=m-1;
}
else
{
l=m+1;
}
}
return -1;
}

最佳答案

改变条件

while(l<=h)

while ( l < h )

并更改此代码片段

    else if(key<A[m])
{
h=m-1;
}

下面的方法

    else if(key<A[m])
{
h = m;
}

该函数可以这样定义

int binarysearch( const int A[], int n, int key )
{
int l = 0;
int h = n;

while ( l < h )
{
int m = ( h + l ) / 2;

if ( A[m] == key )
{
return m;
}
else if( key < A[m] )
{
h = m;
}
else
{
l = m + 1;
}
}

return -1;
}

并称其为

answer=binarysearch( A, 10, key );

关于c - 二分查找输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30280068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com