public
class
RandomizedBinarySearch
{
public
static
int
getRandom(
int
x,
int
y)
{
return
(x + (
int
)(Math.random() % (y-x+
1
)));
}
public
static
int
randomizedBinarySearch(
int
arr[],
int
low,
int
high,
int
key)
{
if
(high >= low)
{
int
mid = getRandom(low, high);
if
(arr[mid] == key)
return
mid;
if
(arr[mid] > key)
return
randomizedBinarySearch(arr, low, mid-
1
, key);
return
randomizedBinarySearch(arr, mid+
1
, high, key);
}
return
-
1
;
}
public
static
void
main(String[] args)
{
int
arr[] = {
2
,
3
,
4
,
10
,
40
};
int
n = arr.length;
int
key =
10
;
int
result = randomizedBinarySearch(arr,
0
, n-
1
, key);
System.out.println((result == -
1
)?
"Element is not present in array"
:
"Element is present at index "
+ result);
}
}