2017-07-30 4 views
-10
public long seriesLoop() { 
    long answer = a;   
    for (long i = 1; i < n; i++) {   
     long delta = a;    
     for (long j = 0; j < i; j++) { 
      delta *= r;    
     }   
     answer += delta;   
    }  
    return answer; 
} 

public long seriesClosedForm() { 
    return (long) (a * (1 - Math.pow(r, n))/(1 - r));  
} 

Wie lautet die Big-O-Notation für diese beiden Methoden? Warum? Wie berechnen wir das Big-O eines Algorithmus?Wie berechnet man Big-O?

+4

Ich stimme diese Frage als off-topic zu schließen, weil dies Hausaufgaben-Dump ist. – Guy

+1

berechnen Sie große O nach Schleifen. eine Schleife = O (n). nested loop = O (n^2) –

+0

@ j.pei bitte lesen Sie diesen stackoverflow [thread] (https://stackoverflow.com/questions/3255/big-o-how-do-you-calculate-approximate-it) . Dies wird Ihnen eine klare Vorstellung von Big O geben. –

Antwort

0

Für die erste Methode ist es n * n = n^2. Da es zwei Schleifen gibt, ist für jede Schleife O (n) n, da Sie jedes Element in einem Array durchlaufen.

Zweite ist eine Konstante o (1).

+0

Ja, es ist meine Antwort. Aber mein Tutor sagte, der erste sollte O (n) sein, und der zweite ist eigentlich nicht O (1), es ist O (log n). Ich weiß nicht warum ... –