function get_min_abs_value($array){
$length = count($array);
$left = 0;
$right = $length - 1;
return binary_abs_search($array,$left,$right);
}
function binary_abs_search(&$array,$left,$right){
$mid = intval(($right + $left) / 2);
if(is_same_sign($array[$left],$array[$right])){
return $array[$left] >= 0 ? $array[$left] : $array[$right];
}
if($left + 1 === $right ){
return abs($array[$left]) < abs($array[$right]) ? $array[$left] : $array[$right];
}
if(abs($array[$mid - 1]) < abs($array[$mid])){
$right = $mid - 1;
return binary_abs_search($array,$left,$right);
}else if(abs($array[$mid + 1]) < abs($array[$mid])){
$left = $mid + 1;
return binary_abs_search($array,$left,$right);
}else{
return $array[$mid];
}
}
function is_same_sign($a,$b){
if($a * $b >= 0){
return true;
}else{
return false;
}
}