تالار گفتمان مانشت
محاسبه زمان اجرای یک کد - نسخه‌ی قابل چاپ

محاسبه زمان اجرای یک کد - SnowBlind - 27 مرداد ۱۳۹۲ ۱۱:۱۰ ب.ظ

سلام

من با هیچ روشی نمتونم بفهمم مرتبه ی این کد چی میشه و کلا اعصابمو ریخته به هم Angry

کد php:
n;
while(
>= 1) {
    
i;
    while(
<= n) {
        
*= 2;
    }
    
/= 2;


کسی میتونه راه نمایی کنه؟

محاسبه زمان اجرای یک کد - M4$0UD - 28 مرداد ۱۳۹۲ ۱۲:۳۸ ق.ظ

من یه چیزی به ذهنم رسیده.
حلقه خارجی مرتبه زمانی [tex]O(lgn)[/tex] هست.
مرتبه زمانی حلقه داخلی با عوض شدن i و در نهایت j به این صورت هست. [tex](1 2 ... lgn)[/tex]
که یه تصاعد عددی محسوب میشه که مجموع جملات برابر هست با ([tex]\frac{lg*n .(lgn 1))}{2}[/tex]).
پس نظر من اینه که اردر کلی برابر است با [tex]O(lg*n . (lgn)^{2})[/tex].
البته اصلا به این جواب مطمئن نیستم لطفا بقیه دوستان هم بیاند نظر بدند.

(۲۸ مرداد ۱۳۹۲ ۱۲:۳۸ ق.ظ)M4$0UD نوشته شده توسط:  من یه چیزی به ذهنم رسیده.
حلقه خارجی مرتبه زمانی [tex]O(lgn)[/tex] هست.
مرتبه زمانی حلقه داخلی با عوض شدن i و در نهایت j به این صورت هست. [tex](1 2 ... lgn)[/tex]
که یه تصاعد عددی محسوب میشه که مجموع جملات برابر هست با ([tex]\frac{lg*n .(lgn 1))}{2}[/tex]).
پس نظر من اینه که اردر کلی برابر است با [tex]O(lg*n . (lgn)^{2})[/tex].
البته اصلا به این جواب مطمئن نیستم لطفا بقیه دوستان هم بیاند نظر بدند.

الان که یکم فکر کردم به نظرم غلطه Smile
فکر کنم جواب [tex]lg*n(lgn)[/tex] باشه. حالا بقیه لطفا نظر بدند تا با هم بحث کنیم.

RE: محاسبه زمان اجرای یک کد - MajidManesht2012 - 28 مرداد ۱۳۹۲ ۰۱:۱۳ ق.ظ

(۲۷ مرداد ۱۳۹۲ ۱۱:۱۰ ب.ظ)SnowBlind نوشته شده توسط:  سلام

من با هیچ روشی نمتونم بفهمم مرتبه ی این کد چی میشه و کلا اعصابمو ریخته به هم Angry

کد php:
n;
while(
>= 1) {
    
i;
    while(
<= n) {
        
*= 2;
    }
    
/= 2;


کسی میتونه راه نمایی کنه؟

به ازای i=n حلقه داخلی ۱بار میچرخد و به ازای i=n/2 حلقه داخلی ۲بار میچرخد و به ازای i=n/4 حلقه داخلی ۳بار میچرخد و به ازای i=n/8 حلقه داخلی ۴بار میچرخد و ... و اگر با هوش باشید مثل من (محض تنوع) متوجه خواهیم شد که به ازای i=1 حلقه داخلی logn+1 بار میچرخد
حالا جمع تصاعدی بزن:
میدانیم:
[tex]1 2 ... n=n(n 1)/2[/tex]
پس:
[tex]1 2 ... (logn 1)=(logn 1)(logn 2)/2=O(log^{2}n)[/tex]

محاسبه زمان اجرای یک کد - SnowBlind - 28 مرداد ۱۳۹۲ ۰۱:۳۴ ق.ظ

ممنون از دوستان فکر کنم جواب دوستمون مجید جواب درست هستش، در ضمن این تمرین کتاب ساختمان داده پیام نور بود.

محاسبه زمان اجرای یک کد - M4$0UD - 28 مرداد ۱۳۹۲ ۰۱:۵۱ ق.ظ

حق با شماست من خنگ را بگو فکر کردم تعداد جمله های تصاعد lg*n میشه Smile (امان از جو گیر شدن)
من برم تو افق محو شم Smile