Я новичок в анализе алгоритмов. Я просто написал алгоритм разделения и покорения, который должен найти максимальное число из массива в O (n) времени, и я застреваю при формировании его повторения.Подсчет шагов для формирования рекуррентного отношения алгоритма
Следующий мой алгоритм.
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;
}
}
Пожалуйста, сделайте меня правильным, если я ошибаюсь.
Рецидив, что я образовавшийся:
Т (п) = 2T (п/2) +7
я правильно сложением все единицы стоят 7?
Пожалуйста, помогите мне с этим. Благодарю.
вы очистили мое замешательство. Большое спасибо. –