Załóżmy, że masz podprogram z czarną ramką, który może wyodrębnić maksimum z tablicy n elementów w (log n)^a
czasie, gdzie 0 <= a <= 1
. Próbujesz stworzyć optymalny algorytm sortowania, który korzysta z tego podprogramu.Czas trwania sortowania za pomocą podprogramu findmax w czarnej ramce
Oczywistym rozwiązaniem jest wywołanie podprogramu w całej tablicy, zamiana max na ostatni element, a następnie wywołanie iteracyjnie iteracyjnie na A[1, n-1]
do A[1, 2]
.
Czy istnieje lepszy algorytm, który działa szybciej niż czas n*(log n)^a
, czy też oczywiste rozwiązanie jest optymalne?
Pierwsza uwaga: nie można zrobić lepiej, jeśli nie stosujesz procedury maksymalnej czarnej skrzynki –
Zdaję sobie z tego sprawę. – user666866
Nie powiedział, że masz lepszy sposób porównywania przedmiotów. –