求升序数组中绝对值最小的元素

来源:互联网 发布:大数据分析scala 编辑:程序博客网 时间:2024/05/17 02:56

题目来源:http://blog.csdn.net/linygood/article/details/8898691

自己写了下:

#include <cmath>#include <cstdio>int min_abs(int * arr, int size){    if (arr[0] >= 0)    {        return(arr[0]);    }    if (arr[size - 1] <= 0)    {        return(arr[size - 1]);    }    while (true)    {        if (2 >= size)        {            return(-arr[0] < arr[size - 1] ? arr[0] : arr[size - 1]);        }        int middle = size / 2;        if (0 == arr[middle])        {            return(0);        }        else if (0 < arr[middle])        {            size = middle + 1;        }        else        {            arr += middle;            size -= middle;        }    }    return(999);}int main(int argc, char * argv[]){    {        int arr[] = { -3, -2, -1 };        int size = sizeof(arr) / sizeof(arr[0]);        int abs_min = min_abs(arr, size);        printf("abs_min is %d\n", abs_min);    }    {        int arr[] = { -3, -2, -1, 0 };        int size = sizeof(arr) / sizeof(arr[0]);        int abs_min = min_abs(arr, size);        printf("abs_min is %d\n", abs_min);    }    {        int arr[] = { 1, 2, 3 };        int size = sizeof(arr) / sizeof(arr[0]);        int abs_min = min_abs(arr, size);        printf("abs_min is %d\n", abs_min);    }    {        int arr[] = { 0, 1, 2, 3 };        int size = sizeof(arr) / sizeof(arr[0]);        int abs_min = min_abs(arr, size);        printf("abs_min is %d\n", abs_min);    }    {        int arr[] = { -1, 0, 1, 2, 3 };        int size = sizeof(arr) / sizeof(arr[0]);        int abs_min = min_abs(arr, size);        printf("abs_min is %d\n", abs_min);    }    {        int arr[] = { -3, -2, -1, 0, 1 };        int size = sizeof(arr) / sizeof(arr[0]);        int abs_min = min_abs(arr, size);        printf("abs_min is %d\n", abs_min);    }    {        int arr[] = { -3, -2, 2, 3 };        int size = sizeof(arr) / sizeof(arr[0]);        int abs_min = min_abs(arr, size);        printf("abs_min is %d\n", abs_min);    }    {        int arr[] = { -3, -2, 1, 2, 3 };        int size = sizeof(arr) / sizeof(arr[0]);        int abs_min = min_abs(arr, size);        printf("abs_min is %d\n", abs_min);    }    {        int arr[] = { -3, -2, -1, 2, 3 };        int size = sizeof(arr) / sizeof(arr[0]);        int abs_min = min_abs(arr, size);        printf("abs_min is %d\n", abs_min);    }    return(0);}


 

原创粉丝点击