hjp3192457033 2022-11-10 12:02 采纳率: 66.7%
浏览 49
已结题

折半查找法寻找一组数字中的某个数字的位置

利用折半查找法寻找一组数字中的某个数字的位置,输入数组中的数字后,却显示无此数

#include<stdio.h>
int main()
{
int x,s;
int a[15]={0,5,13,19,21,27,56,54,75,80,88,92,105,121,160};
scanf("%d,%d",&x);
int low=0,high=14,middle;
middle=(low+high)/2;
for( ;x!=a[middle]; )
{
middle=(low+high)/2;
if(x>a[middle])
{
low=middle+1;
if(low>high)
{
break;
}
}
else
{
high=middle-1;
if(low>high)
{
break;
}
}
}
s=middle+1;
if(low>high)
printf("无此数\n");
else
printf("%d\n",s);
}

无报错,运行结果有问题

利用折半查找法找到一组数字中某个数字的位置

  • 写回答

2条回答 默认 最新

  • lzl2040 人工智能领域新星创作者 2022-11-10 12:24
    关注

    a[mid] > x的时候再更新右边的,等于的时候不用更新

    #include<stdio.h>
    int main()
    {
        int x,s;
        int a[15]={0,5,13,19,21,27,56,54,75,80,88,92,105,121,160};
        scanf("%d,%d",&x);
        int low=0,high=14,middle;
        middle=(low+high)/2;
        for( ;x!=a[middle]; )
        {
            middle=(low+high)/2;
            if(x>a[middle])
            {
                low=middle+1;
                if(low>high)
                {
                    break;
                }
                //printf("left:%d right:%d\n",low,high);
            }
            else if(x<a[middle])
            {
                high=middle-1;
                if(low>high)
                {
                    break;
                }
                //printf("left:%d right:%d\n",low,high);
            }
        }
        printf("left:%d right:%d\n",low,high);
        s=middle+1;
        if(low>high)
            printf("无此数\n");
        else
            printf("%d\n",s);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月18日
  • 已采纳回答 11月10日
  • 创建了问题 11月10日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测