Zastanówmy się, jak znaleźć minimum i maksimum zbioru, wykonując mniej operacji porównania niezależnie od położenia szukanych wartości w tablicy. W tym celu można porównywać elementy parami: pierwszy z drugim, trzeci z czwartym itd. Następnie porównujemy mniejszy element z pary z aktualnym minimum, a większy — z aktualnym maksimum.
Specyfikacja:
Dane: A[0..n-1] – tablica n liczb całkowitych, n jest liczbą parzystą.
Wynik: mini – najmniejszy element w tablicy A, maks – największy element w tablicy A.
Program (funkcja realizująca ten algorytm):
void MiniMaks(int A[], int &mini, int &maks)
{
if (A[0] > A[1])
{
mini = A[1];
maks = A[0];
}
else
{
mini = A[0];
maks = A[1];
}
for (int i = 2; i < n – 1; i += 2)
{
if (A[i] > A[i+1])
{
if (A[i+1] < mini) mini = A[i+1];
if (A[i] > maks) maks = A[i];
}
else
{
if (A[i] < mini) mini = A[i];
if (A[i+1] > maks) maks = A[i+1];
}
}
}
Uzupełnij tekst, wybierz odpowiednie słowo

