加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 二进制搜索不适用于双打

发布时间:2020-12-15 04:15:58 所属栏目:Java 来源:网络整理
导读:这个程序适用于整数,但不是双打.没有错误,但程序返回-1.对不起,如果这是一个愚蠢的问题,但我是编程的新手. public class binarySearchProject{ public static int binarySearch(double[] arr,double x,int high,int low) { int mid=(high+low)/2; if(high==l
这个程序适用于整数,但不是双打.没有错误,但程序返回-1.对不起,如果这是一个愚蠢的问题,但我是编程的新手.

public class binarySearchProject
{
  public static int binarySearch(double[] arr,double x,int high,int low)
  {
    int mid=(high+low)/2;
    if(high==low || low==mid || high==mid)
    {
      return -1;
    }
    if(arr[mid]>x)
    {
      return binarySearch(arr,x,high,mid);
    }
    else if(arr[mid]<x)
    {
      return binarySearch(arr,mid,low);
    }
    else if(arr[mid]==x)
    {
      return mid;
    }
    return -1;
  }
  public static void main(String args[])
  {
    double i = 45.3;
    double[] a = {-3,10,5,24,45.3,10.5};
    int size = a.length;
    System.out.println(binarySearch(a,i,size,0));
  }
}

解决方法

你应该改变条件:

如果(arr [mid]> x)应为if(arr [mid]< x) 否则如果(arr [mid]< x)应该是否为(arr [mid]> x)

还要注意,为了使这个工作,数组必须排序(这是二进制搜索的全部点),你可以使用Arrays#sort

Arrays.sort(a);

另外,我建议您将类重命名为大写(遵循Java命名约定).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读