Gestolpert über einen (schrecklichen) Algorithmus zur Berechnung der Quadratwurzel einer Zahl. Bin in ein kleines Streitgespräch über die zeitliche Komplexität geraten. Ich behaupte, dass die Zeitkomplexität O (n^2) ist, weil für n Eingang es n mal multipliziert wird. Mein Freund behauptet, dass die Zeitkomplexität tatsächlich O (n) ist. Wer hat Recht und warum?Was ist die asymptotische Komplexität dieses speziellen (schlechten) Algorithmus zur Berechnung der Quadratwurzel einer Zahl?
def squareRoot(x):
if x<0:
return "undefined"
elif x==0:
return 0
for i in range(0,x):
if(i*i)==x:
return i
Was ist "n" in Ihrem Anspruch? Normalerweise ist es die Anzahl der Elemente, die in einem Algorithmus verarbeitet werden, aber hier ist es nicht. –