ساختمان داده/مرتبه زمانی - نسخهی قابل چاپ |
ساختمان داده/مرتبه زمانی - *angle* - 10 مهر ۱۳۹۱ ۰۳:۱۰ ب.ظ
با سلام مرتبه زمانی تکه برنامه زیر چیست [tex]for(i=1;i\leq n ; i ) for(j=1;j\leq n; j =i) x=x 1;[/tex] در پاسخش نوشته [tex]n n\2 n/4 ... n/n[/tex] ولی من اصلا نفهیمدم این دو خط چیکار می کنه سوال از صفحه ۶ ساختمان داده پوران پژوهش ورداشتم ممنون میشم راهنماییم کنید(البته ۲ تا for زیر هم هستند من بد تایپ کردم و کلا ۳ خط زیر هم هستند) |
RE: ساختمان داده/مرتبه زمانی - azad_ahmadi - 12 مهر ۱۳۹۱ ۱۲:۳۴ ب.ظ
(۱۰ مهر ۱۳۹۱ ۰۳:۱۰ ب.ظ)*angle* نوشته شده توسط: با سلام سلام. مثال میزنم: به ازای i=1 هر بار مقدار گام J برابر ۱ می شه یا به عبارتی همون j++ . -------- پس به ازای i = 1 مقدار j تا n/2 میره. به ازای i=2 هربار مقدار گام j به اضافه ۲ میشه یعنی ۱و۳و۵و۷و ... ---------- پس به ازای i = 2 مقدار j تا n/3 میره. به ازای i=3 هربار مقدار گام j به اضافه ۳ میشه یعنی ۱و۴و۷و۱۰و ... ---------- پس به ازای i = 3 مقدار j تا n/4 میره. ... و به همین صورت ادامه پیدا می کنه که مقدار j تا n/n بره. یعنی هربار با گام j یک واحد اضافه می شه و این باعث میشه که تعداد اجرای حلقه for تقسیم بر گام اجرا بشه. واما در آخر n/2 + n/3 + n/4 + n/5 + ...+ n/n که اگه از n فاکتور بگیریم، میشه n* 1/2+1/3+1/4+...+1/n . جواب اون تقسیم ها میشه logn و اگه اون n درش ضرب بشه میشه nlogn. ---------------------------------- درضمن اون جوابی که خودتون نوشتین مال سوال قبلیشه. |
ساختمان داده/مرتبه زمانی - *angle* - 16 مهر ۱۳۹۱ ۱۲:۴۳ ق.ظ
مرسی دوست عزیز از توضیحت.البته همون پاسخ من درست هست و به ازای i=1 مقدار j تا n جلو می رود چون n تغییری نمی کند به سوال توحه کن حرف شما وقتی درست هست که داشته باشیم n=n-1 ولی در سوال داریم x=x+1 |
ساختمان داده/مرتبه زمانی - mfXpert - 16 مهر ۱۳۹۱ ۰۶:۰۱ ب.ظ
(۱۶ مهر ۱۳۹۱ ۱۲:۴۳ ق.ظ)*angle* نوشته شده توسط: مرسی دوست عزیز از توضیحت.البته همون پاسخ من درست هست و به ازای i=1 مقدار j تا n جلو می رود چون n تغییری نمی کند به سوال توحه کن حرف شما وقتی درست هست که داشته باشیمارسال شماره ۲ درسته. دربار اول تکرار حلقه بیرونی، شمارنده حلقه درونی یکی یکی اضافه میشه. در دور دوم اجرای حلقه بیرونی، شمارنده حلقه درونی دو تا دو تا افزایش پیدا میکنه و به همین ترتیب. |
ساختمان داده/مرتبه زمانی - MojtabaArab - 21 مهر ۱۳۹۱ ۰۴:۴۸ ب.ظ
سلام دوست عزیز همون پاسخی که شما نوشتید درسته و مرتبه زمانی (O(log n داره اگه به جوابی که خودتون نوشتید نگاه کنید کسر جواب بصورت صعودی توانی از ۲ میباشد در هر بار که i یک واحد کم میشود n/2 بار حلقه داخلی اجرا میشود |
RE: ساختمان داده/مرتبه زمانی - azad_ahmadi - 21 مهر ۱۳۹۱ ۰۵:۰۶ ب.ظ
(۲۱ مهر ۱۳۹۱ ۰۴:۴۸ ب.ظ)MojtabaArab نوشته شده توسط: سلام دوست عزیز پاسخی که تو پست شماره اول داده شده، اشتباه است. اون پاسخ مربوط به سوال قبلی در کتاب پوران پژوهش هست. بار اول n بار اجرا میشه. بار دوم n/2 بار اجرا میشه. بار سوم n/3 بار اجرا میشه. ... بار آخر n/n بار اجرا میشه. اگه بنویسیم : n + n/2 + n/3 + n/4 + ... + n/n میشه از یک n فاکتور گرفت و جواب میشه n * 1/2 + 1/3 + 1/4 + ... + 1/n (توجه کن که اون * n در همه ضرب شده پرانتزهاشو ننوشتم). حالا سری ۱/۲ + ۱/۳ + ۱/۴ + ... + ۱/n جوابش میشه logn که اگه اون n رو درش ضرب کنیم میشه nlogn. |