Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Last active December 12, 2021 17:43
Show Gist options
  • Save sunmeat/1194aef3a6caa8294572 to your computer and use it in GitHub Desktop.
Save sunmeat/1194aef3a6caa8294572 to your computer and use it in GitHub Desktop.
recursive binary search
package com.alex.recursion;
import java.util.Arrays;
import java.util.Random;
class BinarySearchRecursive {
public static void main(String[] args) {
int size = 20;
Random r = new Random();
int[] ar = new int[size];
for (int i = 0; i < ar.length; i++) {
ar[i] = r.nextInt(size);
}
Arrays.sort(ar);
System.out.println(Arrays.toString(ar));
System.out.println(binSearch(ar, 5, 0, ar.length - 1));
}
static int binSearch(int[] ar, int value, int l, int r) {
int m = (l + r) / 2;
if (l >= r) {
return -1;
}
if (ar[m] == value) {
return m;
} else if (ar[l] == value) {
return l;
} else if (ar[r] == value) {
return r;
} else if (ar[m] > value) {
return binSearch(ar, value, l, m - 1);
} else {
return binSearch(ar, value, m + 1, r);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment