Quelqu'un peut-il aider à la complexité temporelle de cet algorithme, et pourquoi il est O (n^2). Une explication étape par étape serait utile, merci!Diviser algorithme - temps complexité
function divide(x,y)
Input: Two n-bit integers x and y, where y >= 1
Output: The quotient and remainder of x divided by y
if x = 0:
return (q,r) = (0,0)
(q,r) = divide(x/2, y)
q = 2q
r = 2r
if x is odd:
r = r + 1
if r >= y:
r = r - y
q = q + 1
return (q,r)
Pourriez-vous ajouter « le code formattage » à votre code? C'est plutôt difficile à lire maintenant. – Skurmedel
Clarification nécessaire - les opérations arithmétiques fonctionnent-elles sur un type de données de base (par exemple, int) ou sur des tableaux (par exemple un tableau BigInt d'ints)? – paxdiablo
non c'est pas, c'est une question d'examen passé et je suis en train de réviser pour un examen à venir. J'ai les solutions ici, mais je ne comprends pas ce: à chaque appel de l'algorithme, nous perdons un peu. Il y aura donc n + 1 appels. Chaque appel implique au plus 2 multiplications par 2 (décalages à gauche), deux additions par 1, et une soustraction par y, qui est tout O (n). D'où le total complexité est O (n2) – KP65