def min_max_dziel(tablica, lewy, prawy): # jeden element if lewy == prawy: return tablica[lewy], tablica[lewy], 0 # dwa elementy if prawy == lewy + 1: if tablica[lewy] < tablica[prawy]: return tablica[lewy], tablica[prawy], 1 # jedno porównanie min i max razem else: return tablica[prawy], tablica[lewy], 1 # więcej elementów – dzielimy problem srodek = (lewy + prawy) // 2 min_l, max_l, por_l = min_max_dziel(tablica, lewy, srodek) min_p, max_p, por_p = min_max_dziel(tablica, srodek + 1, prawy) # łączymy wyniki – wykonujemy dwa porównania min_final = min(min_l, min_p) max_final = max(max_l, max_p) por_total = por_l + por_p + 2 # jedno porównanie dla min, jedno dla max return min_final, max_final, por_total # ====================== # TEST # ====================== dane = [1, 3, 4, 2, 55, 66] minimum, maksimum, porownania = min_max_dziel(dane, 0, len(dane)-1) print("Minimum:", minimum) print("Maksimum:", maksimum) print("Liczba porównań:", porownania)