۰
subtitle
ارسال: #۱
  
زمان اجرای مرتب سازی درجی
با عرض سلام و خسته نباشیید
در الگوریتم مرتب سازی درجی فرض کنید هر بار احرای خط i ام زمان [tex]c_{i}[/tex] صرف کند و [tex]c_{i}[/tex] ثابت است. همچنیین فرض کنید به ازای هر j=2,3,...,n تعداد اجرای حلقه ی while در خط ۵ برابر [tex]t_{j}[/tex] باشد زمان اجراش چقدر است. اگه ممکنه مرحله به مرحله توضیح بدهید و همچنیین توضیح مختصری در مورد اینکه چه چیزهایی هزینه و زمان اجرا هر خط ندارن و چه چیزهایی دارن رو ذکر کنید و روش بدست اوردن زمان اجرا هر خط چطوری است و درنهایت توضیح دهید چون بدترین حالت و بهترین حالت و حالت متوسط را در نظر میگیرید و زمان اجرای هر کدوم رو حساب میکنید و زمان اجراش برابر چند میشود. ببخشیید طولانی شد.باتشکر
کد الگوریتم مرتب سازی درجی در پیوست قراردارد.
در الگوریتم مرتب سازی درجی فرض کنید هر بار احرای خط i ام زمان [tex]c_{i}[/tex] صرف کند و [tex]c_{i}[/tex] ثابت است. همچنیین فرض کنید به ازای هر j=2,3,...,n تعداد اجرای حلقه ی while در خط ۵ برابر [tex]t_{j}[/tex] باشد زمان اجراش چقدر است. اگه ممکنه مرحله به مرحله توضیح بدهید و همچنیین توضیح مختصری در مورد اینکه چه چیزهایی هزینه و زمان اجرا هر خط ندارن و چه چیزهایی دارن رو ذکر کنید و روش بدست اوردن زمان اجرا هر خط چطوری است و درنهایت توضیح دهید چون بدترین حالت و بهترین حالت و حالت متوسط را در نظر میگیرید و زمان اجرای هر کدوم رو حساب میکنید و زمان اجراش برابر چند میشود. ببخشیید طولانی شد.باتشکر
کد الگوریتم مرتب سازی درجی در پیوست قراردارد.
۰
ارسال: #۲
  
RE: زمان اجرای مرتب سازی درجی
شما قبول داری هر خط برنامه مثلا X بار اجرا میشه. حالا برای هر خط شما مقدار اجراشو بنویس: داریم
این خط حلقه while بسته به این که key از چند تا از عناصر ۰ تا i کوچکتر باشه تکرار میشه که در بدترین حالت از همه ی اونا کوچیکتره که این حلقه i + 1 بار اجرا میشه و محتویات داخلش i بار اجرا میشه و در بهترین حالت از همه بزرکتر و میاد اول آرایه [tex]A[0\dots i][/tex] قرار میگیره که در کل حلقه دوبار و محتواب داخلش ۱ بار اجرا میشن و به صورت ریاضی داریم:
[tex]T(n) = (n - 1) (n - 1) \sum _{j = 2}^{n} j \sum _{j = 2}^{n} (j - 1) [/tex] که اگه این سری ها رو حساب کنی میشه در نهایت یه چیزی از مرتبه [tex]O(n^2)[/tex] واسه حالت بهترین هم اون دوتا سری میشن: [tex]\sum _{j = 2}^{n} 1 [/tex] که اینا هم در نهایت میشن n و واسه Best case داریم [tex]T(n) = O(n)[/tex].
البته این انالیز ها خیلی نا دقیق هستن.
کد:
insertion-sort(A)
for j<-2 to n do
{
key<-A[j]; // in "n - 1" bar ejra mishe
i<-j-1; // in "n - 1" bar ejra mishe
while(i>0) and (A[i]>key ) // in khat bahsesh fargh dare
{
i<-i-1;
}
A[i+1]<-key // in "n - 1" bar ejra mishe
}
این خط حلقه while بسته به این که key از چند تا از عناصر ۰ تا i کوچکتر باشه تکرار میشه که در بدترین حالت از همه ی اونا کوچیکتره که این حلقه i + 1 بار اجرا میشه و محتویات داخلش i بار اجرا میشه و در بهترین حالت از همه بزرکتر و میاد اول آرایه [tex]A[0\dots i][/tex] قرار میگیره که در کل حلقه دوبار و محتواب داخلش ۱ بار اجرا میشن و به صورت ریاضی داریم:
[tex]T(n) = (n - 1) (n - 1) \sum _{j = 2}^{n} j \sum _{j = 2}^{n} (j - 1) [/tex] که اگه این سری ها رو حساب کنی میشه در نهایت یه چیزی از مرتبه [tex]O(n^2)[/tex] واسه حالت بهترین هم اون دوتا سری میشن: [tex]\sum _{j = 2}^{n} 1 [/tex] که اینا هم در نهایت میشن n و واسه Best case داریم [tex]T(n) = O(n)[/tex].
البته این انالیز ها خیلی نا دقیق هستن.
ارسال: #۳
  
RE: زمان اجرای مرتب سازی درجی
(۲۸ شهریور ۱۳۹۲ ۰۱:۳۵ ب.ظ)SnowBlind نوشته شده توسط: for j<-2 to n doاین جملات رو متوجه نشدم ممکنه ساده تر توضیح بدی باتشکر
{
key<-A[j]; // in "n - 1" bar ejra mishe
چرا این کد n-1 با اجرا میشه میخوام این جزئیات رو بدونم.
i<-j-1; // in "n - 1" bar ejra mishe
و همچنیین این
while(i>0) and (A[i]>key ) // in khat bahsesh fargh dare
{
i<-i-1;
}
A[i+1]<-key // in "n - 1" bar ejra mishe
و همجنیین این چرا n-1 بار فرمول کلی داره بگویید.
}[/code]
این خط حلقه while بسته به این که key از چند تا از عناصر ۰ تا i کوچکتر باشه تکرار میشه که در بدترین حالت از همه ی اونا کوچیکتره که این حلقه i + 1 بار اجرا میشه و محتویات داخلش i بار اجرا میشه و در بهترین حالت از همه بزرکتر و میاد اول آرایه [tex]A[0\dots i][/tex] قرار میگیره که در کل حلقه دوبار و محتواب داخلش ۱ بار اجرا میشن و به صورت ریاضی داریم:
[tex]T(n) = (n - 1) (n - 1) \sum _{j = 2}^{n} j \sum _{j = 2}^{n} (j - 1) [/tex] که اگه این سری ها رو حساب کنی میشه در نهایت یه چیزی از مرتبه [tex]O(n^2)[/tex] واسه حالت بهترین هم اون دوتا سری میشن: [tex]\sum _{j = 2}^{n} 1 [/tex] که اینا هم در نهایت میشن n و واسه Best case داریم [tex]T(n) = O(n)[/tex].
البته این انالیز ها خیلی نا دقیق هستن.
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close