package java程序员面试笔试宝典;
public class 题8_5_12求绝对值最小的数 {
public static void main(String[] args) {
int[] a0={-12,0,3};
int[] a1={-12,-10,-5,-2,7,15,50,90};
int[] a2={2,4,6,8,27};
int[] a3={-13,-9,-7,-3};
System.out.println(getMinAbsoluteValue(a3));
}
public static int min(int a,int b){
return a>b?b:a;
}
public static int getMinAbsoluteValue(int[] a){
if(a[0]>=0){
return a[0];
}
int len=a.length;
if(a[len-1]<=0){
return -a[len-1];
}
int begin=0;
int end=a.length-1;
int mid;
while(true){
mid=begin+(end-begin)/2;
if(a[mid]==0){
return a[mid];
}else if(a[mid]>0){
if(a[mid-1]<=0){
return min(a[mid], -a[mid-1]);
}else{
end=mid;
}
}else{
if(a[mid+1]>=0){
return min(a[mid+1], -a[mid]);
}else{
begin=mid;
}
}
}
}
}