2016-01-03 17 views
7

Bu işlevin karmaşıklığını nasıl bulabilirim?Math.Sqrt() zaman karmaşıklığı?

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); 
} 

aşağıda bölüm Ç (1) olduğunu biliyoruz:

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

Ama Math.Sqrt() karmaşıklığı ne olduğunu çözemiyorum.

+0

Sadece merak ediyorum, bu ifade için O (n) 'nin bir zaman karmaşıklığı, bir dizi üzerinde etkili bir şekilde yinelendiği için değil midir? – RedLaser

+0

Hayır, O (13), dizi boyutu sabit, yani O (1) aslında. – ferit

cevap