زمان کنونی: ۱۶ اردیبهشت ۱۴۰۳, ۰۳:۱۳ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

کمک واسه مرتبه زمانی تو ساختمان داده

ارسال:
  

masoud.bala پرسیده:

کمک واسه مرتبه زمانی تو ساختمان داده

کمک از همه دوستان واسه توضیح دادن ساده به من!

می تونم خوب مرتبه را انجام بدم می شه واسه من یک توضیح جامع بدید من سوال را الان ایجا می نویسم منتظر جواب شما هستم فقط تو را خدا روان توضیح بدید من یکمی پایه برنامه نویسیم ضعیف هستش ممنونم
for(i=1;i<=n;i++)
}
for(j=1;j<=n;j++)
x=x+1
n=n-1
{

بعد من تناقض این ۲ سوال را هم نمیدونم
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
}
x=x+1
n=n-1
{
خواهشا خوب واسم توضیح بده مثل یک بچه اول دبستان
نقل قول این ارسال در یک پاسخ

۱
ارسال:
  

Aurora پاسخ داده:

RE: کمک واسه مرتبه زمانی تو ساختمان داده

سلام
با اجازه سوال اول رو توضیح میدم.
[tex]for(i=1,i<=n,i )[/tex]
}
[tex]for(j=1,j<=n,j )[/tex]
[tex]x=x 1[/tex]
[tex]n=n-1[/tex]
{

ببینید بعد از for اول یک اکولاد باز شده و تمام دستورات بعدش داخل اکولاد هست. بیایید با یک مثال حلش کنیم. فرضا n برابر ۳ باشه.
باید با n برابر ۳ برنامه رو دنبال کنیم.
ابتدا در حلقه اول هستیم. i برابر یک میشه و سپس شرط i<=n چک میشه. شرط برقراره؟ بله چون i که همون یک باشه از n که ۳ است کمتره. پس دستورات پایین حلقه اجرا میشه.
وارد حلقه دوم میشیم. j رو برابر یک میکنه و سپس شرط j<=n اجرا میشه. و شرط برقراره. خوب وارد دستورات پایین میشه. این رو می دونیم که در حلقه for فقط یک دستور پایین حلقه اجرا میشه. وای اگه اکولاد داشته باشه تمام دستورات داخلش اجرا میشن. خوب الان می بینیم که فقط یک دستور پایین از حلقه دوم باید اجرا بشه. دستور [tex]x=x 1[/tex] اجرا میشه و از دوباره وارد حلقه دوم میشه و j=2 میشه شرط حلقه چک میشه و دستور [tex]x=x 1[/tex] دوباره اجرا میشه و j همین طور بهش اضافه میشه تا به n برسه که در مثال ما ۳ بود. دیگه از حلقه دوم خارج میشه. خوب حالا وارد دستور پایین یعنی [tex]n=n-1[/tex] میشه و n کم میشه.
خوب پس حالا وارد حلقه اول میشه. و به i اضافه میشه و همین روال دوباره تکرار میشه.
ولی نکته چیه؟
در مرحله اول حلقه n بار اجرا میشه.
در مرحله دوم n-1 بار
در مرحله سوم n-2 بار
در مرحله چهارم n-3 بار
....
و در اخر هم یکبار
خوب مجموعا چند بار اجرا شد؟ ۱+...+n(n+1)/2=n+n-1+n-2+n-3
پس ار مرتبه n به توان ۲ میشه.

ببینید برای یادگرفتن این طور سوال ها کافیه که یک مثال برای n بزنید و حلش کنید.
نقل قول این ارسال در یک پاسخ

ارسال:
  

GCC پاسخ داده:

RE: کمک واسه مرتبه زمانی تو ساختمان داده

(۲۴ تیر ۱۳۹۱ ۱۰:۳۶ ب.ظ)Aurora نوشته شده توسط:  در مرحله اول حلقه n بار اجرا میشه.
در مرحله دوم n-1 بار
در مرحله سوم n-2 بار
در مرحله چهارم n-3 بار
....
و در اخر هم یکبار
خوب مجموعا چند بار اجرا شد؟ ۱+...+n(n+1)/2=n+n-1+n-2+n-3
پس ار مرتبه n به توان ۲ میشه.

ببخشید روی تست اول من یه سوال دارم:
مگه حلقه مربوط به i تا n/2 پیش نمیره؟
یعنی بار اول حلقه j دقیقا n بار اجرا میشه و بعد n یکی کم میشه
بار دوم حلقه j دقیقا n-1 بار اجرا میشه و n یکی دیگه کم میشه و بهمین ترتیب
منتها چون n داره کم میشه مقدار i تا n/2+1 پیش میره
یعنی کل دفعات اجرا میشه n+(n-1)+(n-1)+...+(n/2+1) ؟
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

ghaderiyaser پاسخ داده:

RE: کمک واسه مرتبه زمانی تو ساختمان داده

اولی از مرتبه nبه توان ۲ ,و دومی از مرتبه n هستش. به کروشه ها دقت کن. هنگامی که بعد از for کروشه نیاد فقط یک دستور سطر پایینشو اجرا میکنه.
نقل قول این ارسال در یک پاسخ

ارسال:
  

masoud.bala پاسخ داده:

RE: کمک واسه مرتبه زمانی تو ساختمان داده

(۲۴ تیر ۱۳۹۱ ۱۲:۳۳ ب.ظ)ghaderiyaser نوشته شده توسط:  اولی از مرتبه nبه توان ۲ ,و دومی از مرتبه n هستش. به کروشه ها دقت کن. هنگامی که بعد از for کروشه نیاد فقط یک دستور سطر پایینشو اجرا میکنه.
ببین من منظورتو متوجه نمی شم می خوام کلاً بدونم چجوری چه این و چه حالت دیگه مرتبه زمانی را باید حساب کنم همین فعلاً جواب نمی خوام راه حل می خوام اونم به زبان ساده اول ابتدایی
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

SaMiRa.e پاسخ داده:

کمک واسه مرتبه زمانی تو ساختمان داده

(۲۴ تیر ۱۳۹۱ ۰۳:۰۸ ب.ظ)naderx نوشته شده توسط:  تست اول رو گوش کن اگه واضح بود بگو دومی رو شروع کنم.

مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
ممنون بابت توضیحات ، ولی شما تست دوم اول گفتید Tongue Wink
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

Aurora پاسخ داده:

RE: کمک واسه مرتبه زمانی تو ساختمان داده

بله درسته. این قسمت اخر رو اشتباه کردم. ممنون از شما جهت یاداوری.دوستان معذرت بابت اشتباه.
چون i و n هر دو همزمان با هم در حال تغییرند تا n=1 پیش نمیره . یعنی i یکی یکی بهش اضافه میشه و n هم یکی یکی ازش کم میشه. تا اینکه تقریبا در وسط به هم برسند.
شکلشو برای n= 3 کشیدم.


الان درسته؟
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

GCC پاسخ داده:

RE: کمک واسه مرتبه زمانی تو ساختمان داده

بله درسته. ممنونم که کامل پاسخ دادید.

در مورد تست دوم هم من یکجایی رو متوجه نمیشم. ممنون میشم شما یا دوستان توضیح بدید.
بنظرم اون فایل صوتی و عکسی که همراهش هست، کاملا درسته منتها اون عبارت داخل پرانتز چرا تا بینهایت پیش میره؟
جالبه که تو پوران هم همینکارو کرده. البته به لحاظ پیچیدگی فرقی نمیکنه اما اگر تعداد دقیق دفعات اجرای x++ را بخواهیم فکر نکنم درست باشه.
یعنی مثلا اگر n=8 باشه:
برای i=1 حلقه j دقیقا ۸/۲=۴ بار تکرار میشه و مقدار n هم میشه ۴/
برای i=2 حلقه j دقیقا ۴/۲=۲ بار تکرار میشه و n هم میشه ۲/
برای i=3 حلقه j دقیقا ۲/۲=۱ بار تکرار میشه و n هم میشه ۱/
و برای i=4 حلقه j یکبار دیگه تکرار میشه چون شرط j<=1 برقراره و n میشه ۰ و دیگه حلقه j تکرار نمیشه.
بنابراین تعداد دفعات اجرای x++ میشه:
n/2 + n/4 + n/8 + ... + n/2^k + 1
طوریکه k=logn هست. یعنی اون سری تا بینهایت نمیره که بگیم میشه سری هارمونیک و کلش برابر با ۱ ؟
درواقع میشه:
n[1/2+1/4+1/8+....+1/n]+1
که داخل پرانتز هم میشه:
[tex]\frac{1}{2}\times \frac{(\frac{1}{2})^{log n}-1}{\frac{1}{2}-1} =\frac{n-1}{n}[/tex]
و کل زمان اجرا:
[tex]n-1 1=n[/tex]
؟؟
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
Question بهترین منبع ساختمان داده برای کنکور ارشد marvelous ۱۰ ۱۱,۵۲۲ ۱۵ آذر ۱۴۰۱ ۰۷:۵۶ ب.ظ
آخرین ارسال: msnmkh
  فیلم آموزش ساختمان داده negin_bt ۰ ۱,۰۲۸ ۲۰ مهر ۱۴۰۱ ۰۷:۵۶ ب.ظ
آخرین ارسال: negin_bt
Exclamation سلام لطفاً یکی به من بگه مرتبه زمانی ها چطوری به log تبدیل میشن فرمول داره؟؟ Azadam ۶ ۴,۰۳۳ ۰۶ دى ۱۴۰۰ ۰۹:۰۲ ق.ظ
آخرین ارسال: Soldier's life
  کمک برای حل تمرین پایگاه داده zhila1994 ۰ ۱,۹۹۵ ۲۲ آذر ۱۳۹۹ ۰۱:۲۵ ب.ظ
آخرین ارسال: zhila1994
  معرفی کتاب برای ساختمان داده siamakaf ۲ ۴,۲۸۶ ۱۲ آبان ۱۳۹۹ ۰۹:۲۱ ق.ظ
آخرین ارسال: siamakaf
  مرتبه ایجاد درخت rad.bahar ۱ ۳,۱۰۰ ۳۰ مهر ۱۳۹۹ ۰۳:۳۴ ب.ظ
آخرین ارسال: rad.bahar
  مرتبه شبه کد rad.bahar ۱ ۲,۰۹۹ ۲۲ مهر ۱۳۹۹ ۰۹:۳۲ ب.ظ
آخرین ارسال: BBumir
  حل مساله مرتبه زمانی حلقه های تو در تو sarashahi ۱۶ ۲۱,۴۶۰ ۱۹ خرداد ۱۳۹۹ ۰۱:۱۶ ب.ظ
آخرین ارسال: gillda
  ساختمان داده و پایگاه داده پارسه امیدوار ۴ ۴,۰۷۷ ۱۲ خرداد ۱۳۹۹ ۰۸:۰۳ ب.ظ
آخرین ارسال: marvelous
  مرتبه زمانی Sanazzz ۱۷ ۱۹,۵۷۲ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۴۶ ب.ظ
آخرین ارسال: mohsentafresh

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close