Ich bin neu in Sachen Algorithmenanalyse. Ich habe gerade einen Divide and Conquer-Algorithmus geschrieben, der in O (n) -Zeit eine maximale Zahl von einem Array finden soll, und ich bin dabei, seine Wiederholung zu bilden.Zählschritte, um eine Wiederholungsbeziehung eines Algorithmus zu bilden
Folgendes ist mein Algorithmus.
int findMax(int *A, int S, int E){
if(S == E){ //1 unit of time
return A[S];
}
else if(S == (E-1)){ // 1 unit of time
if(A[S] > A[E]){ // 1 unit of time
return A[S];
}
else{
return A[E];
}
}
mid = (S+E)/2; // 1 unit of time
L = findMax(A, S, mid);
R = findMax(A, mid+1, E); // 1 unit of time
if(L > R){ // 1 unit of time
return L;
}
else if(R > L){ // 1 unit of time
return R;
}
}
Bitte korrigieren Sie mich, wenn ich falsch liege.
Rezidive, die ich gebildet ist:
T (n) = 2T (n/2) +7
Bin ich alle Einheiten 7 kosten korrekt addieren?
Bitte helfen Sie mir damit. Vielen Dank.
Sie meine Verwirrung gelöscht. Danke vielmals. –