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(a); 另外,我建议您将类重命名为大写(遵循Java命名约定). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |