Adódhat olyan eset, hogy van egy tömbünk, amiben valamilyen adatokat tárolunk. Ezekből szeretnénk kiválasztani a legkisebb, és legnagyobb elemet. Az algoritmus elején létre kell hozni két változót, ami a minimum és maximum értéket fogja tárolni. Ezek kezdőértékét a tömb első elemére állítjuk, mivel fogalmunk sincs, hogy melyek a keresett elemek.
Ezután egy ciklusban végignézzük a tömb összes elemét. Ha a tömb aktuális eleme kisebb, mint a legkisebb változó által tárolt érték, akkor a legkisebb változó értékét átállítjuk a tömb aktuális elemére. A legnagyobb elem meghatározása is hasonló, csak a reláció fordított. Az algoritmus futási ideje lineáris.
Egy lehetséges példa implementáció:
using System;
namespace PeldaAlgoritmusMinmax
{
class Program
{
public static void MinMax(int[] tomb, out int min, out int max)
{
min = tomb[0];
max = tomb[0];
for (int i = 0; i < tomb.Length; i++)
{
if (tomb[i] < min)
{
min = tomb[i];
}
if (tomb[i] > max)
{
max = tomb[i];
}
}
}
static void Main(string[] args)
{
var tomb = new int[] { 9, 6, 0, 0, 1, 2, 2, 2, 3, 1, 5, 4, 8, 2, 8, 6 };
int min;
int max;
MinMax(tomb, out min, out max);
Console.WriteLine("Minimum: {0}, Maximimum: {1}", min, max);
Console.ReadKey();
}
}
}
A program kimenete:
$
Minimum: 0, Maximimum: 9