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
                    
                    
                    
                                                        二维码
                        
                        
                                                
                        