Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Java by (7k points)

I am trying to sort and search an array. 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 element in the array but gives me “-1” as a result

This is my code:

 public static void main(String[] args) {

    int[] array = new int[5];

    array[0] = 50;

    array[1] = 40;

    array[2] = 10;

    array[3] = 20;

    array[4] = 100;

sort(array, (array.length - 1));

      for (int x = 0; x < array.length; x++) {

        System.out.println(" " + array[x]);

    }

    System.out.println("");

    System.out.println("Binary search (R): " + rBsearch(array, 0, (array.length), 20));

}

    public static void sort(int[] a, int last) {

    if (last > 0) {

        int max = findMax(a, last);

        swap(a, last, max);

        sort(a, last - 1);

    }

}

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 mid;

    } else if (L[mid] < k) {

        return rBsearch(L, k, mid + 1, high);

    } else {

        return rBsearch(L, k, low, mid - 1);

    }

 }

public static int findMax(int[] arr, int last) {

    int max = 0;

    for (int i = 0; i <= last; i++) {

        if (arr[i] > arr[max]) {

            max = i;

        }

    }

    return max;

    }

public static void swap(int[] arr, int last, int max) {

    int temp = arr[last];

    arr[last] = arr[max];

    arr[max] = temp;

}

1 Answer

0 votes
by (13.1k points)

There is  a problem with your 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);

    }

 }

Want to learn Java? Check out the Java certification from Intellipaat.

Related questions

0 votes
1 answer
0 votes
0 answers
0 votes
1 answer
asked Mar 23, 2021 in Java by sheela_singh (9.5k points)
0 votes
1 answer
asked Feb 9, 2021 in Python by ashely (50.2k points)

Browse Categories

...