Hallo allerseits,
Ich habe die Aufgabe, die Komplexität des folgenden Algos zu bestimmen:
Seh ich das richtig, dass "A[i-1] < S.top()" stehts eine Exception liefert, da S ja empty ist!? Falls das stimmt, wird weder die if-Bedinungn noch die while-Schlaufe je ausgeführt. So wird lediglich die for-SChlaufe durchlaufen, was zu einer Komplexität von O(n) führt.
Stimmt das so?
Vielen Dank für Antworten + Tipps!
Ich habe die Aufgabe, die Komplexität des folgenden Algos zu bestimmen:
Code:
// Input: An array A of n integers
// Output: An array B of n integers
// Let B be a new empty array of n integers
// Let S be a new empty stack
j = 0;
for(int i = 1; i < n; i++) {
if(A[i-1] < S.top())
S.push(A[i-1]);
else {
while( A[i-1] < S.top()) {
B[j] = S.pop();
j++;
}
}
}
return B;
Seh ich das richtig, dass "A[i-1] < S.top()" stehts eine Exception liefert, da S ja empty ist!? Falls das stimmt, wird weder die if-Bedinungn noch die while-Schlaufe je ausgeführt. So wird lediglich die for-SChlaufe durchlaufen, was zu einer Komplexität von O(n) führt.
Stimmt das so?
Vielen Dank für Antworten + Tipps!