In alternativa, utilizzare un cambio variabile y = n - x
seguita da Sigma notazione per analizzare il numero di iterazioni del interno while
ciclo dell'algoritmo .

I sovrastima sopra, per ogni ciclo while interno, il numero di iterazioni da 1
nei casi in cui n-1
non è un multiplo di i
, cioè dove (n-1) % i != 0
. Mentre procediamo, assumiamo che (n-1)/i
sia un numero intero per tutti i valori di i
, quindi sovrastima il numero totale di iterazioni nel ciclo interno while
, includendo successivamente il segno di minore o uguale a (i)
di seguito. Si procede con l'analisi notazione Sigma:

dove, a (ii)
, approssimato il n
: th harmonic number dall'integrale associato. Quindi, l'algoritmo viene eseguito in O(n·ln(n))
, asintoticamente.
Lasciando comportamento asintotico e studiare la crescita effettiva dell'algoritmo, siamo in grado di utilizzare i dati di esempio belle di esatto (n,cnt)
(dove cnt
è il numero di iterazioni interne) coppie da @chux (fare riferimento alla sua risposta) e confronta con il numero stimato di iterazioni dall'alto, ovvero, n(1+ln(n))-ln(n)
. È evidente che la stima si armonizza perfettamente con il conteggio effettivo, vedere i grafici sottostanti o this snippet for the actual numbers.

Infine si noti che se lasciamo n->∞
nella somma su 1/i
sopra, la serie risultante è la infinite harmonic series, che è, curiosamente, divergenti. La prova per il secondo fa uso del fatto che in infiniti termini non-zero naturalmente è infinito stesso. In pratica, tuttavia, per un sufficientemente grande ma non infinito n, ln(n)
è un'appropriata approssimazione della somma, e questa divergenza non è rilevante per la nostra analisi asintotica qui.
IMHO non è affatto un duplicato della semplice spiegazione inglese di Big O. OP sa cos'è Big O e sta chiedendo la valutazione corretta in un caso specifico. –
Visto che non ci sono valori di ritorno e nessun effetto collaterale, possiamo essere sicuri che il compilatore non lo ottimizzi? – jpmc26
Woah .. ti aspetteresti che una simile domanda ottenga un punteggio simile? Misteri di SO ... –