m0_50801530 2020-12-16 23:20 采纳率: 0%
浏览 52

这个二分查找出了什么错

请实现有重复数字的有序数组的二分查找。

输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。

输入格式:

输入第一行有两个数,第一个数为数组长度n(≤10^6),第二个数为需要查找的数。

接下来有n个整数,以空格或换行符分隔。

输出格式:

输出待查找的数的位置。

输入样例:

5 4
1 2 4 4 5

输出样例:

3

样例解释: 

有5个数,查找4出现的位置,4第一次出现在第3个位置,所以输出3。

 #include <bits/stdc++.h>
using namespace std;
int Zheban(int a[],int low,int high,int k)
{


        while (low < high)
       {
            int mid = (low + high-1) / 2;
            if (k > a[mid])
                low = mid + 1;
            else
                high = mid;
        }
        if (k == a[high])
        {
            return high;
        }

    return -1;
}
int main()
{
    int a[1000001];
    int size1 = 0;
    int number = 0;
    int i,j=0;
    cin >>size1>>number;
    for(i=1;i<=size1;i++)
    {
        cin >>a[i];
    }
    j=Zheban(a,1,size1,number);

    if(size1==0)cout<<1;
    else if(size1<0&&size1>1000001)cout<<1;
    else if(j>=0)cout<<j;
    else cout<<size1+1;

}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:37
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥20 20CrMnMo的高温变形抗力
  • ¥15 RTX3.6 5565驱动中断报错
  • ¥50 带防重放token(Antireplay-Token)的网站怎么用Python发送请求
  • ¥15 visa版本没问题,串口调试助手调试串口正常使用,但是labview刷新不出来
  • ¥15 java MQTT SSL证书
  • ¥20 求一个手机号或者Wxid转微信号的工具
  • ¥20 msconfig开启安全引导后重启电脑黑屏
  • ¥15 对email表单做了一般邮箱正则校验,现在需要额外输入为hotmail或outlook、gmail时做特定邮箱校验,不符合提示出来。并且保证不影响其他正确的邮箱格式通过校验,通过不会提示。
  • ¥20 Win11,bitblocker密钥恢复失败
  • ¥15 stm32 cubemx配置sdram,初始化后无法读写sdram