2016-01-03 18 views
7

Come posso trovare la complessità di questa funzione?La complessità temporale di Math.Sqrt()?

private double EuclideanDistance(MFCC.MFCCFrame vec1, MFCC.MFCCFrame vec2) 
{ 
    double Distance = 0.0; 
    for (int K = 0; K < 13; K++) 
    Distance += (vec1.Features[K] - vec2.Features[K]) * (vec1.Features[K] - vec2.Features[K]); 
    return Math.Sqrt(Distance); 
} 

So che la sezione di seguito è O (1):

double Distance = 0.0; 
for (int K = 0; K < 13; K++) 
    Distance += (vec1.Features[K]-vec2.Features[K])*(vec1.Features[K]-vec2.Features[K]); 

Ma io non riesco a capire cosa la complessità della Math.Sqrt() è.

+0

Mi chiedo solo, non dovrebbe essere che l'affermazione sia di una complessità temporale di O (n) in quanto effettivamente itera su un array? – RedLaser

+0

No, è O (13), la dimensione dell'array è fissa, quindi O (1) in realtà. – ferit

risposta

5

Si può considerare O (1):

In altre parole, Math.Sqrt() si traduce in una singola virgola mobile macchina istruzione codice

fonte: c# Math.Sqrt Implementation

+0

@BathantHegazy sei il benvenuto :) – BlackBear

Problemi correlati