| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 828 人关注过本帖
标题:大家试试我这个代码 功能是查找输入数字,但是只能找8-10的数字 0-7都会卡住 ...
只看楼主 加入收藏
Remained
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2022-2-21
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
大家试试我这个代码 功能是查找输入数字,但是只能找8-10的数字 0-7都会卡住
程序代码:
//二分查找Bnary_Search:在一个数组中查找具体某个数,如果找到就返回该数,找不到就返回-1 
#include<stdio.h>
int Search_Num(int arr[],int Find_Num,int Size);
//在一个数组中查找具体某个数,
//如果找到就返回该数,找不到就返回-1  

int main()
{
    int arr[]={0,1,2,3,4,5,6,7,8,9,10};    //0-10 查找的数字库 
    int Find_Num = 0;//你要找的数字 
    int ret = 0;            //返回值 
    int Size = sizeof(arr)/sizeof(arr[0]);// 该数组大小/数组中一个数字的大小=该数组中数字的个数         

    printf("从0-10中输入一个要寻找的数字:\n");
    scanf("%d",&Find_Num); 
    
    ret = Search_Num(arr,Find_Num,Size);//二分法查找函数 
//此处arr为首元素的地址 
    if(ret == -1)
    {
        printf("找不到指定数字\n"); 
    }
    else
    {
        printf("找到了,下标是:%d\n",ret); 
    } 
    return 0;
    
} 
//arr本质上是一个指针 
int Search_Num(int arr[],int Find_Num,int Size)//输入一个数组,一个需要查找的数字 一个数组中数字个数 
{
    
    int left = 0;//定义左下标 
    int right = Size-1;//定义右下标
      
    while(left<=right)//只要左下标还小于等于右下标就表示还有数字可以寻找 
    {
        int mid =(left+right)/2;    //中间元素下标 
        if(arr[mid]<Find_Num)        //该数组中中间一个数比要找的数小 
        {
            left=mid+1;                //左边元素下标变为中间元素下标+1 
        }
        else if(arr[mid]>Find_Num)  //如果该数组中间元素下标比要找的数大 
        {
            left=mid-1;                //左边元素下标变为中间元素下标-1
        }
        else 
        {
            return mid;                //反馈该数  
        }
    
    }
    return -1;     //找不到反馈-1 
    
}
搜索更多相关主题的帖子: 下标 数字 int 查找 元素 
2022-02-21 19:45
Remained
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2022-2-21
收藏
得分:0 
求大神看看!
2022-02-21 19:45
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
0-7都会卡住
说谎了吧,输入5明明也可以的。

把 left=mid-1; 改为 right=mid-1; 就行了
收到的鲜花
  • Remained2022-02-22 15:57 送鲜花  1朵  
2022-02-22 08:16
Remained
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2022-2-21
收藏
得分:0 
回复 3楼 rjsp
膜拜!
2022-02-22 15:56
快速回复:大家试试我这个代码 功能是查找输入数字,但是只能找8-10的数字 0-7都 ...
数据加载中...
 
   



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

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