package AL.java;
import java.util.*;
import java.util.Arrays;
public class BinarySearch {
public static int rank(int key,int[] a) {
int lo = 0;
int hi = a.length - 1;
while(lo <= hi)
{
int mid = lo + (hi - lo)/2;
if(key<a[mid])
hi = mid - 1;
else if(key>a[mid])
lo = mid + 1;
else
return mid;
}
return -1;
}
public static int rank_2(int key,int[] a,int low,int high) {
if(key<a[low] || key>a[high] || low>high) {
return -1;
}
int mid = (low + high)/2;
if(a[mid]>key) {
return rank_2(key,a,low,mid-1);
}
else if(a[mid]<key) {
return rank_2(key,a,mid+1,high);
}
else {
return mid;
}
}
public static void main(String[] args) {
int[] array = {1,3,2,7,5,4,6};
Arrays.sort(array);
System.out.println(rank(3,array));
System.out.println(rank_2(3,array,0,array.length-1));
}
}