C++のSTLで配列の最大要素と最小要素を求める方法
本記事では、C++のSTL(標準テンプレートライブラリ)を使って、配列の中から最大要素と最小要素を簡単に求める方法を解説します。
例えば、配列が [12, 45, 74, 32, 66, 96, 21, 32, 27] の場合、最大要素は 96、最小要素は 12 となります。
C++では、<algorithm> ヘッダーに用意されている max_element() 関数と min_element() 関数を使用することで、それぞれ最大値と最小値を簡単に取得できます。これらの関数は、指定した範囲内の要素を走査し、最大(または最小)の要素へのイテレータを返します。そのため、戻り値を参照外し(*)して値を取得する点に注意してください。
サンプルコード
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int arr[] = {12, 45, 74, 32, 66, 96, 21, 32, 27};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "配列の内容: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << "\n最大要素: " << *max_element(arr, arr + n);
cout << "\n最小要素: " << *min_element(arr, arr + n);
return 0;
}実行結果
配列の内容: 12 45 74 32 66 96 21 32 27 最大要素: 96 最小要素: 12
コードのポイント
sizeof(arr) / sizeof(arr[0]) を使うことで、配列の要素数を動的に計算できます。これにより、配列のサイズが変わってもコードを修正する必要がありません。
また、max_element() と min_element() は第一引数に範囲の先頭、第二引数に範囲の末尾(最後の要素の次)を指定します。上記の例では arr から arr + n までの範囲、つまり配列全体が対象となります。
この方法を使えば、手動でループを書いて比較する必要がなく、簡潔かつ効率的に最大値・最小値を求めることができます。時間計算量は O(n) であり、配列の要素数に比例して処理時間が増加します。
-
C++で線形探索を使って配列の最小要素を求めるプログラム
本記事では、線形探索(リニアサーチ)の手法を用いて、配列内の最小要素を求めるC++プログラムを紹介します。このプログラムの計算量はO(n)です。線形探索は配列の先頭から順に要素を一つずつ確認していくシンプルなアルゴリズムであり、配列がソートされている必要がないため、どのような配列にも適用できるのが特徴です。 アルゴリズム 開始 データ要素を配列に格納する。 インデックス「0」の値を最小値変数に代入する。 最小値を他のデータ要素と順番に比較する。 最小値がそのインデックスの値より大きい場合は、値を更新する。 最小値を出力する。 終了 サンプルコード #includ
-
C#で配列内の最大要素と最小要素を見つける方法
C#で配列の中から最大値と最小値を求めるには、まず配列の最初の要素を最大値・最小値の初期値として設定し、残りの要素と順番に比較していくのが基本的なアプローチです。 考え方 変数 max と min に、それぞれ配列の先頭要素(arr[0])を代入しておきます。その後、2番目以降の要素を1つずつ取り出しながら、以下のように比較を行います。 最大値を求める場合 現在の要素が max より大きければ、その値で max を更新します。 max) { max = arr[i]; } 最小値を求める場合 現在の要素が min より小さければ、その値で min を更新します。 if(arr[i]