经典指数          
原因
1975
浏览数
0
收藏数
 

一组有序数(从小到大排列),有负有正,找出绝对值最小值。(C或C++)

     举报   纠错  
 
切换
1 个答案

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]

}

 
切换
撰写答案