标题:为什么找不出数来啊!
只看楼主
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
结帖率:100%
已结贴  问题点数:50 回复次数:2 
为什么找不出数来啊!
#include <iostream>
using namespace std;
#define N 10



void print_maopao(int a[])
{
    int i;
    cout<<"排序的结果是:"<<endl;
    for(i=0;i<N;i++)
        cout<<a[i]<<endl;
}
void maopao(int a[])
{
    int i,j,k;
    for(i=0;i<=N-1;i++)
        for(j=0;j<=N-i-1;j++)
            if(a[j]>a[j+1])
            {
                k=a[j];
                a[j]=a[j+1];
                a[j+1]=k;
            }
}
int chazhao(int a[],int num)
{
    int start=0,end=N-1,mid;
    int flag=0;
    mid=(start+end)/2;
    do{
        if(num>a[mid])start=mid+1;
        else if(num<a[mid])end=mid-1;
        else
        {
            flag=1;
            break;
        }
    }while(start<=end);
        if(flag==1)
        {
            cout<<"找到这个数在mid+1上"<<mid+1<<endl;
            return(mid+1);
        }
        else
        {
            cout<<"找不到该数!"<<endl;
            return(0);
        }
}
void main()
{
    int a[N],num;
    int i;
    cout<<"请输入十个数:"<<endl;
    for(i=0;i<N;i++)
    cin>>a[i];
    maopao(a);
    print_maopao(a);
    cout<<"请输入你要查找的数:"<<endl;
    cin>>num;
    chazhao(a,num);
}



为什么那个查找程序不能用啊?既不显示找的到也不显示找不到!
搜索更多相关主题的帖子: mid void include start 
2009-09-09 10:31
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
得分:50 
你的zhaodao函数里,mid值在do while循环里一直没变,比较的数始终是中间的数。
程序代码:
do{ 
        if(num>a[mid])start=mid+1; 
        else if(num<a[mid])end=mid-1; 
        else 
        { 
            flag=1; 
            break; 
        } 
    }while(start<=end); 

努力—前进—变老—退休—入土
2009-09-09 17:24
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
得分:0 
十分感谢指点!
2009-09-09 18:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-285195-1-1.html




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

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