| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 506 人关注过本帖
标题:二分法查找
只看楼主 加入收藏
baby俊
Rank: 1
等 级:新手上路
帖 子:22
专家分:5
注 册:2011-3-22
结帖率:88.89%
收藏
已结贴  问题点数:20 回复次数:2 
二分法查找
#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;
}
这道程序的二分法查找数怎么运行出来都是第二个元素啊。。是哪里错了,找不到,求解
搜索更多相关主题的帖子: 二分法 
2011-04-04 22:35
loveminttea
Rank: 3Rank: 3
来 自:河南科技学院
等 级:论坛游侠
帖 子:95
专家分:146
注 册:2010-10-14
收藏
得分:0 
是不是if语句后面括号内有错
2011-04-05 13:28
dengjinbao
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:64
专家分:119
注 册:2011-3-22
收藏
得分:20 
#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;
}

2011-04-05 15:50
快速回复:二分法查找
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031074 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved