No więc da się to zrobić tak:
Kod: Zaznacz cały
int i =0; bool czy = false;
int x = A[0];
while (i<=n-1 && !czy) do
{
x= max(x,A[i]);
if (x <= min(A,i+1,n)) czy =true;
i++;
}
min(int tab, int y_1,int y_2 )
to funkcja rekurencyjna zwracająca najmniejszą wartość tablicy na przedziale \(\displaystyle{ [y_1,y_2]}\). Ale w pesymistycznym układzie to jest około \(\displaystyle{ n}\) porównań liczb, \(\displaystyle{ n}\) wywoływań funkcji max i \(\displaystyle{ n}\) wywoływań funkcji min, która sama w sobie robi więcej niż \(\displaystyle{ \frac{y_2 - y_1}{2}}\) (ale mniej niż \(\displaystyle{ \frac{y_2 - y_1}{1}}\)) porównań liczb. Czyli razem jakoś \(\displaystyle{ n + n+ (n + n-1 + n-2 +...+1) \approx \frac{n^2}{2}}\). Da się szybciej?