forked from sambit77/Algoexpert-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBinarySearch_Recursive.java
More file actions
40 lines (37 loc) · 1.07 KB
/
BinarySearch_Recursive.java
File metadata and controls
40 lines (37 loc) · 1.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//Time Complexity O(log n) | Space Complexity O(log n)
import java.util.*;
class A
{
public static void main(String[] args)
{
int[] arr = new int[]{12,30,45,67,89,90,435,23}; //given array should be in sorted order
int target = 435; //element to find
int index = binarySearch(arr,target);
System.out.println("Given Arrray"+Arrays.toString(arr)); //prints the input array
System.out.println(target+" is found at "+index);
}
public static int binarySearch(int[] arr, int target)
{
return binarySearchHelper(arr,target,0,arr.length-1);
}
public static int binarySearchHelper(int[] arr,int target,int begin,int end)
{
if(begin > end)
{
return -1; //elemnet is not found in array
}
int mid = (begin+end)/2;
if(arr[mid] == target)
{
return mid; //element is found at index mid
}
else if(arr[mid]>target)
{
return binarySearchHelper(arr,target,begin,mid-1); // element is present in left halve
}
else
{
return binarySearchHelper(arr,target,mid+1,end); // element is present in right halve
}
}
}