6-5 求自定类型元素的最大值:while循环实现

150 阅读1分钟

题目:

本题要求实现一个函数,求N个集合元素S[]中的最大值,其中集合元素的类型为自定义的ElementType

函数接口定义:

ElementType Max( ElementType S[], int N );

其中给定集合元素存放在数组S[]中,正整数N是数组元素个数。该函数须返回NS[]元素中的最大值,其值也必须是ElementType类型。

pintia.cn/problem-set…

解答:

我一直在思考,如何尽量不使用多余的变量,避免多余的步骤,来实现代码

尽量不使用多余的变量,就是避免使用for循环,而采用while循环

尽量避免多余的步骤,就是要避免循环中的无意义操作,减少循环次数

基于这个思路,我的代码如下:

ElementType Max( ElementType S[], int N )
{
    // 1. max 赋值为数组最后一个元素; 2. N减一
    ElementType max = S[--N];

    // 从 (原始的)N - 1 开始往后循环
    while (N--)
        // S[N] 从 倒数第二个数开始与 max 比较
        if (S[N] > max)
            max = S[N];

    return max;
}