-
Notifications
You must be signed in to change notification settings - Fork 0
/
BinarySer.java
59 lines (52 loc) · 1.45 KB
/
BinarySer.java
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import javax.lang.model.util.ElementScanner14;
public class BinarySer {
public static void main(String[] args)
{
// int[] arr={-55,-22,-5,0,2,4,6,8,12,15,22,45,55,62,74};
// int target=55;
int[] arr={99,84,81,75,71,65,55,40,22,10,-5,-15,-50};
int target=55;
System.out.println(search(arr, target) );
}
static int search(int[] arr,int target){
int start=0;
int end=arr.length-1;
boolean isAsc=true;
while(start<=end){
//find wether the array is soted or not =>Asc
if(arr[start]<arr[end]){
isAsc=true;
}else{
isAsc=false;
}
if(isAsc)
{
int mid=start+(end - start)/2; //best way to find mid ele => m=s-e/2 exceed the int range
if(target==arr[mid]){
return mid;
}
if(target > arr[mid]){
start=mid+1;
}
else
{
end=mid-1;
}
}
else{
int mid=start+(end - start)/2; //best way to find mid ele => m=s-e/2 exceed the int range
if(target==arr[mid]){
return mid;
}
if(target < arr[mid]){
start=mid+1;
}
else
{
end=mid-1;
}
}
}
return -1;
}
}