注册 登录
编程论坛 C++教室

二分法查找

baby俊 发布于 2011-04-04 22:35, 506 次点击
#include<iostream>
using namespace std;
int HalfSearch(int arr[],int size, int key)
{
    int low=0,high=size-1,mid;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(key==arr[mid]);
        return mid;
         if(key>arr[mid])
            low=mid+1;
        else high=mid-1;
    }
    return -1;
}
int main()
{
    int a[10]={13,27,36,57,65,73,82,88,90,99},value,n;
    cout<<"请输入待找的整数:";
    cin>>value;
    if(n=HalfSearch(a,10,value)!=-1)
        cout<<"找到"<<value<<"是第"<<n+1<<"个元素!\n";
    else cout<<"数组中没有要找的值!\n";
    return 0;
}
这道程序的二分法查找数怎么运行出来都是第二个元素啊。。是哪里错了,找不到,求解
2 回复
#2
loveminttea2011-04-05 13:28
是不是if语句后面括号内有错
#3
dengjinbao2011-04-05 15:50
#include<iostream>
using namespace std;
int HalfSearch(int arr[],int size, int key)//这个函数没有正确的返回值,你的返回值一塌糊涂
{
    int low=0,high=size-1,mid;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(key==arr[mid]);
        return mid;
         if(key>arr[mid])
            low=mid+1;
        else high=mid-1;
    }
    return -1;
}
int main()
{
    int a[10]={13,27,36,57,65,73,82,88,90,99},value,n;
    cout<<"请输入待找的整数:";
    cin>>value;
    if(n=HalfSearch(a,10,value)!=-1)// 这里看不懂 下面由我写的程序,你自己慢慢看
        cout<<"找到"<<value<<"是第"<<n+1<<"个元素!\n";
    else cout<<"数组中没有要找的值!\n";
    return 0;
}



#include<iostream>
using namespace std;
int HalfSearch(int arr[],int size, int key)
{
    int low=0,high=size-1,mid,row;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(key==arr[mid])
        row= mid;
         if(key>arr[mid])
            low=mid+1;
        else high=mid-1;
    }
    return row;
}
int main()
{
    int a[10]={13,27,36,57,65,73,82,88,90,99},value,n;
    cout<<"请输入待找的整数:";
    cin>>value;
   if(HalfSearch(a,10,value)>=0)
      { n=HalfSearch(a,10,value);
        cout<<"找到"<<value<<"是第"<<n+1<<"个元素!\n";
   }
    else cout<<"数组中没有要找的值!\n";
    return 0;
}

1