R1QX9EB6BE8D1
Zdjęcie przedstawia owoce sezonowe w małych pojemnikach, porzeczki, jagody, borówki, maliny i poziomki.

I_R_W14_M25_Java Szukanie jednoczesne min‑max

Źródło: Alex Block, domena publiczna.

Algorytm jednoczesnego znajdowania minimum i maksimum

Metoda „Dziel i zwyciężaj” (ang. Divide and Conquer) to potężna technika projektowania algorytmów, która polega na rozbiciu złożonego problemu na mniejsze, łatwiejsze do rozwiązania podproblemy tego samego typu.

Proces ten składa się z trzech głównych kroków:

  • Dziel (Divide): Rozdzielamy problem na mniejsze części (zwykle na dwie połowy).

  • Zwyciężaj (Conquer): Rozwiązujemy te mniejsze problemy (często rekurencyjnie). Jeśli problem jest wystarczająco mały (przypadek bazowy), rozwiązujemy go bezpośrednio.

  • Połącz (Combine): Łączymy rozwiązania mniejszych części w jedno rozwiązanie problemu głównego.

W przypadku szukania minimum i maksimum, zamiast porównywać każdy element po kolei, dzielimy tablicę na pół, aż otrzymamy segmenty jedno- lub dwuelementowe.

1
Ćwiczenie 1

Napisz program, który wykorzystując metodę bąbelkową, wyznaczy i przesunie na początek ciągu liczbowego (reprezentowanego w programie jako tablica) najmniejszy jego wyraz. Po wyznaczeniu i przesunięciu najmniejszego wyrazu na początek ciągu, wypisz go.

Specyfikacja problemu:

Dane:

  • ciag – ciąg liczb całkowitych zapisany w tablicy; tablica liczb całkowitych

  • n – długość ciągu (rozmiar tablicy); liczba całkowita

Wynik:

  • najmniejszaLiczba – najmniejszy wyraz ciągu; liczba całkowita

R1OFRJ9PV6GQ9