Je souhaite utiliser une procédure Divide-and-Conquer pour calculer le i-ème élément le plus grand d'une rangée d'entiers et analyser la complexité temporelle asymptotique de l'algorithme.Trouver le i-ème élément le plus important
Algorithm ith(A,low,high){
q=partition(A,low,high);
if (high-i+1==q) return A[q];
else if (high-i+1<q) ith(A,low,q-1);
else ith(A,q+1,high);
}
Est-ce vrai? Si oui, comment pourrions-nous trouver sa complexité temporelle?
La complexité temporelle est décrit par la relation de récurrence suivante:
T (n) = T (NQ) + T (q-1) + Θ (n)
Mais comment pouvons-nous résoudre ce relation de récurrence, sans connaître la valeur de q?
Ou y a-t-il un algorithme avec moins de complexité temporelle qui calcule le ième élément le plus grand à une rangée d'entiers?
Que voulez-vous dire "la complexité du temps"? Moyen, pire des cas, autre chose? Ensuite, la relation de récurrence correcte peut être déterminée. Ce que vous avez pour la relation de récurrence est actuellement erroné, quelle que soit la version de "complexité du temps" qui vous intéresse. –