Java – binary search is not applicable to doubles
•
Java
This program applies to integers, but not doubles There was no error, but the program returned - 1 Sorry, if this is a stupid question, but I'm new to programming
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));
}
}
Solution
You should change the conditions:
If (arr [mid] > x) should be if (arr [mid] < x), otherwise if (arr [mid] < x) should be (arr [mid] > x)
Also note that in order for this to work, the array must be sorted (this is all the points of binary search). You can use arrays #sort:
Arrays.sort(a);
In addition, I recommend that you rename the class to uppercase (following the Java Naming Convention)
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
