编写查找最多 4 个数字的函数的最佳方法是什么? [已关闭]

问题描述 投票:0回答:1

我编写了一个 C 程序,使用函数查找最多 4 个数字。我用 5 种方法编写了该函数。任何人都可以建议哪种方法是最好的方法。

方法一:

int max_of_four(int a, int b, int c, int d){
    if((a>b)&&(a>c)&&(a>d))
        return a;
    else if ((b>a)&&(b>c)&&(b>d))
        return b;
    else if ((c>a)&&(c>b)&&(c>d))
        return c;
    else
        return d;
}

方法二:

int max_of_four(int a, int b, int c, int d){
    int max=a;

    if (max<=b)
        max = b;
    if (max<=c)
        max = c;
    if (max<=d)
        max = d;

    return max;
}

方法三:

int max_of_four(int a, int b, int c, int d){
    int max = a;

    max = (max<=b)?b:max;
    max = (max<=c)?c:max;
    max = (max<=d)?d:max;

    return max;
}

方法四:

int max_of_four(int a, int b, int c, int d)
{
    int max = -1;
    int arr1[4] = {a,b,c,d};

    for(int i=0;i<=4;i++)
    {
        if(max <= arr1[i])
           max = arr1[i];
    }

    return max;
}

方法5:

int max(int a, int b) {
    return a > b ? a : b;    
}

int max_of_four(int a, int b, int c, int d) {
    return max(a, max(b, max(c, d)));
}

调用max_of_four的主要函数如下:

int main() {
    int a, b, c, d;
    scanf("%d %d %d %d", &a, &b, &c, &d);
    int ans = max_of_four(a, b, c, d);
    printf("%d", ans);

    return 0;
}

请通过解释每种方法的优缺点来说明哪种方法是最好的方法。

c++ c function time-complexity space-complexity
1个回答
0
投票

这个怎么样:

int max_of_four(int a, int b, int c, int d)
{
    const int max_ab = (a >= b) ? a : b;
    const int max_cd = (c >= d) ? c : d;
    return (max_ab >= max_cd) ? max_ab : max_cd;
}

这里的想法是局部变量很便宜并且可以放置在寄存器中。

© www.soinside.com 2019 - 2024. All rights reserved.