一组有序数(从小到大排列),有负有正,找出绝对值最小值。(C或C++)
int g_errno=0;
int absmin(int *nums,int n)
{
if(nums==NULL||n<=0)
{
g_errno=-1;
return 0;
}
int first=0;
int end=n-1;
if(nums[first]>=0)
return nums[first];
if(nums[end]<=0)
return -nums[end];
while(first { if(end-first==1) break; int mid=end-((end-first)>>1); if(nums[mid]<0) first=mid; else end=mid; } return -nums[first] }