C#で配列内の最大要素と最小要素を見つける方法
C#で配列の中から最大値と最小値を求めるには、まず配列の最初の要素を最大値・最小値の初期値として設定し、残りの要素と順番に比較していくのが基本的なアプローチです。
考え方
変数 max と min に、それぞれ配列の先頭要素(arr[0])を代入しておきます。その後、2番目以降の要素を1つずつ取り出しながら、以下のように比較を行います。
最大値を求める場合
現在の要素が max より大きければ、その値で max を更新します。
if(arr[i] > max) {
max = arr[i];
}
最小値を求める場合
現在の要素が min より小さければ、その値で min を更新します。
if(arr[i] < min) {
min = arr[i];
}
この処理をループで繰り返すことで、配列全体を一度走査するだけで最大値と最小値の両方を求めることができます。計算量は O(n) となり、非常に効率的です。
サンプルコード
以下は、5つの整数を持つ配列から最大要素と最小要素を求める完全なC#プログラムです。
using System;
public class Demo {
public static void Main() {
int[] arr = new int[5] {99, 95, 93, 89, 87};
int i, max, min, n;
// 配列のサイズ
n = 5;
// 先頭要素を初期値として設定
max = arr[0];
min = arr[0];
for(i = 1; i < n; i++) {
if(arr[i] > max) {
max = arr[i];
}
if(arr[i] < min) {
min = arr[i];
}
}
Console.Write("Maximum element = {0}\n", max);
Console.Write("Minimum element = {0}\n\n", min);
}
}
実行結果
Maximum element = 99 Minimum element = 87
補足:LINQを使った別の方法
C#ではLINQを利用すると、より簡潔に最大値・最小値を取得できます。
using System;
using System.Linq;
public class Demo {
public static void Main() {
int[] arr = {99, 95, 93, 89, 87};
Console.WriteLine("Maximum element = " + arr.Max());
Console.WriteLine("Minimum element = " + arr.Min());
}
}
Max() メソッドと Min() メソッドを使えば、手動でのループ処理を書く必要がなく、コードの可読性も向上します。用途に応じて、ループによる実装とLINQによる実装を使い分けるとよいでしょう。
-
Pythonで2次元配列からk番目に小さい要素を求めるプログラム
n×n のユーザー入力による整数行列と値 k が与えられたとき、その2次元配列の中から「k番目に小さい要素」を見つけるのが本記事の目的です。この問題は、Python標準ライブラリの heapq モジュールを使うことで効率的に解決できます。 heapqモジュールとは heapq(ヒープキュー)は、Pythonでヒープ構造(優先度付きキュー)を扱うためのモジュールです。このモジュールの特徴は、毎回ヒープの中で最も小さい要素が取り出される「最小ヒープ(min heap)」として動作する点にあります。また、nsmallest() メソッドを使うことで、データ集合の中から最小のn個の値を簡単に取得するこ
-
Pythonでリスト内の最大値・最小値の位置を見つける方法
Pythonでは、リスト内の最大値や最小値を求めるのが非常に簡単で、それらの位置(インデックス)も簡単に取得できます。Pythonには便利な組み込み関数が用意されており、min()はリスト内の最小値を求め、max()はリスト内の最大値を求めます。さらに、index()を使えば特定の要素のインデックス(位置)を調べることができます。 アルゴリズム maxminposition(A, n) /* Aはユーザーが入力したリスト、nはリストのサイズ */ ステップ1:組み込み関数を使って最小要素の位置を求める A.index(min(A)) ステップ2:組み込み関数を使って最