Я написал эту функцию, чтобы найти второй по величине элемент массива, но у меня есть некоторые сомнения по поводу его временной сложности. Имеет ли условие if θ (1) или увеличивает временную сложность рекурсивных вызовов?
С экспериментальной точки он должен быть не больше, чем максимальный максимальный элемент со сложностью времени стратегии "разделяй и властвуй".
int secondmax(int arr[], int first , int last){
if(first+1==last) return arr[first];
int mid= first +(last-first)/2;
int left = secondmax(arr, first, mid);
int right = secondmax(arr, mid, last);
if( (left > right ? left : right) > max1){
max2=max1;
max1= left > right ? left : right;
}
else if((left > right ? left : right) > max2 && (left > right ? left : right) != max1){
max2= left > right ? left : right;
}
return left > right ? left : right;
}
ps max1, max2 - глобальные переменные, возможно, я мог бы сократить max1