Benim Bilgisayar Bilimleri II Final yarın bir kod segmentinin Big-Oh nasıl bulacağını anlamak için yardıma ihtiyacım var ve kod segmentleri için Big Oh nasıl bulacağını anlayarak yardıma ihtiyacım var. İnterneti araştırdım ve bunu nasıl anladığımı gösteren örnekleri bulamadım. Biz algoritmanın sırasını (Big-Oh) bulmak gerekiyorduBen
for(int pass = 1; i <= n; pass++)
{
for(int index = 0; index < n; index++)
for(int count = 1; count < n; count++)
{
//O(1) things here.
}
}
}
:
İşte son bizim örnekten bir problem.
Burada olurdu O (n^3) düşünüyorum ve ben doğru yapıyorum ben sadece emin değilim bu sonuca
for(int pass = 1; i <= n; pass++) // Evaluates n times
{
for(int index = 0; index < n; index++) // Evaluates n * (n+1) times
for(int count = 1; count < n; count++) // Evaluates n * n * (n) times
{
//O(1) things here.
}
}
}
// T(n) = (n) + (n^2 + n) + n^3
// T(n) = n^3 + n^2 + 2n
// T(n) <= c*f(x)
// n^3 + n^2 + 2n <= c * (n^3)
// O(n) = n^3
nasıl geldi. Birisi böyle bir kodu nasıl değerlendireceğimi açıklayabilir mi ve/veya cevabımı nasıl doğrulayabilir?
Cevabınız doğru, ancak her döngü için saydığınız yineleme sayısı değil.İlk ve ikincisi her iki yineleme 'n' süreleri ve ird yinelenen '1 - kez. Açıkçası bu sonucu etkilemez. –
Gerçek bir dünya problemini çözmek için bir O (n^3) algoritması kullanmanız gerekiyorsa, işler oldukça kötü. – john
@john: Ayrıca birçok duruma ve "n" :-) – deepmax