C++における配列の第2最大値の求め方


方法1: ソートして2番目の要素を取得する この方法は、配列を昇順にソートし、2番目に大きい要素を取得するというものです。

#include <algorithm>
int secondMax(int arr[], int size) {
    std::sort(arr, arr + size);  // 配列をソートする
    return arr[size - 2];  // 2番目に大きい要素を返す
}

方法2: 最大値を求めて、最大値より小さい要素の中で最大値を探す この方法は、最初に配列内の最大値を求め、その最大値より小さい要素の中で最大値を探すというものです。

int secondMax(int arr[], int size) {
    int max = arr[0];
    int secondMax = arr[0];
    // 配列内の最大値を求める
    for (int i = 1; i < size; i++) {
        if (arr[i] > max) {
            secondMax = max;
            max = arr[i];
        } else if (arr[i] > secondMax && arr[i] != max) {
            secondMax = arr[i];
        }
    }
    return secondMax;
}

方法3: 最大値を見つけながら2番目の最大値を更新する この方法は、最大値を見つけながら2番目の最大値を更新していくというものです。

int secondMax(int arr[], int size) {
    int max = arr[0];
    int secondMax = arr[0];
    for (int i = 1; i < size; i++) {
        if (arr[i] > max) {
            secondMax = max;
            max = arr[i];
        } else if (arr[i] > secondMax) {
            secondMax = arr[i];
        }
    }
    return secondMax;
}

これらの方法を使用して、C++で配列内の第2最大値を求めることができます。ご参考までにお使いください。