Sorting and Binary search using Java

前端 未结 4 672
离开以前
离开以前 2020-12-18 17:17

I was asked to sort and search an array. The sorting the array was simple and my code worked but then whenever I try to call the binary search method it works for the first

相关标签:
4条回答
  • 2020-12-18 17:28

    You did a mistake in calling the rBsearch method in the following lines Instead of

    else if (L[mid] < k) {
            return rBsearch(L, k, mid + 1, high); 
        } else {
            return rBsearch(L, k, low, mid - 1);
        }
    

    You should use

    else if (L[mid] < k) {
                return rBsearch(L,  mid + 1, high,k); //the order of the parameters
            } else {
                return rBsearch(L, low, mid - 1,k);
            }
    
    0 讨论(0)
  • 2020-12-18 17:33

    You goofed up the binary search intervals

    public static int rBsearch(int[] L, int low, int high, int k) {
    
    
        int mid = (low + high) / 2;
    
        if (low > high) {
            return -1;
        } else if (L[mid] == k) {
            return L[mid];
        } else if (L[mid] < k) {
            return rBsearch(L, mid + 1, high, k);
        } else {
            return rBsearch(L, low, mid - 1, k);
        }
     }
    
    0 讨论(0)
  • 2020-12-18 17:36
    1. Take Array From User
    2. Sort Array using Build-in Function of Java...
    3. then Search Element using Binary Search....

          import java.lang.reflect.Array;
          import java.util.Arrays;
          import java.util.Scanner;
      
          class BinarySearch
          {
             public static void main(String args[])
             {
                int array[];
      
                Scanner input = new Scanner(System.in);
                System.out.println("Enter number of elements:");
               int Size_Of_Array = input.nextInt(); 
      
      
                array = new int[Size_Of_Array];
      
                System.out.println("Enter " + Size_Of_Array + " integers");
      
                for (int counter = 0; counter < Size_Of_Array; counter++)
                    array[counter] = input.nextInt();
      
                Arrays.sort(array);
                System.out.println("Sorting Array is :-");
                for (int counter = 0; counter < Size_Of_Array; counter++)
                    System.out.println(array[counter]);
      
                System.out.println("Enter the search value:");
                int  Searching_item = input.nextInt();
      
                int First_Index=0;
                int Last_Index=Size_Of_Array-1;
                int Middle_Index=(First_Index+Last_Index)/2;
      
                while(First_Index <= Last_Index)
                {
                    if(array[Middle_Index] < Searching_item)
                    {
                        First_Index=Middle_Index+1;
                    }
                    else if ( array[Middle_Index] == Searching_item ) 
                    {
                      System.out.println(Searching_item + " found at location " + (Middle_Index + 1) + ".");
                      break;
                    }
                    else
                    {
                        Last_Index = Middle_Index - 1;
                    }
                    Middle_Index = (First_Index + Last_Index)/2;
      
                    if ( First_Index > Last_Index )
                    {
                        System.out.println(Searching_item + " is not found.\n");
                    }
                }
              }
          }
      

      Result of BinarySearch

    0 讨论(0)
  • 2020-12-18 17:39

    Easiest way is: Convert you array to list: Arrays.asList(array)

    For sort: Collections#sort

    For search: Collections#binarySearch

    See this

    0 讨论(0)
提交回复
热议问题