سلام...![]()
بالاخره من اومدم ! (خوش اومدم
)
برای شروع يه الگوريتم مرتب سازی(!)
ميزارم آسونم هست ![]()
heap يه درخته باينری داره که هر آدمی
که اسمش (i) دوتا بچه داره (2i) و (2i+1) يه دونه بابا ام داره (i/2) دو نوع
درخته heap داريم يکی Max_heap يکی ام Min_heap
که تويه Max_heap هر بابابی از دوتا
بچه هاش بزرگتره (نه بابا
)
تويه Min_heap هر بابابی از دوتا بچه
هاش کوچيک تره (جدییییییییییی؟!!!!!!
)
من Max_heap ميگم ديگه اون يکيم همين
جوريه (از کجا معلوم؟!!
)
برايه اضافه کردنه يه آدمه جديد تو درختمون ميزاريمش اولين جایی که جا هست حالا الگوريتم اينطوريه
که هر دفعه ميايم اينو با باباش مقايسه
ميکنيم (چه جوری؟! اینجوری --->
) اگه کوچيکتر بود که تموم
ميشه ديگه رفته سره جاش (هوراااااااااا
) اگه بزرگتر بود جا به
جاشون ميکنيم
حالا اگه بخوايم يه آدميو از درخت حذف
کنيم اول ميايم آخرين آدمو ميزاريم جاش (بديهيه که يکی از طول
درختمون کم ميشه
) حالا اون آدم جديدرو بايد
جاشو درست کنيم هی ميايم با بچه هاش مقايسه ميکنيم
حالا برايه اينکه مرتب شده ی عددها رو بديم هی ريشه رو چاپ ميکنيم بعد حذفش ميکنيم
دوباره ريشه رو چاپ ميکنيم و ... (اگه گفتی تا کی؟!
به همين
راحتی کی باورش ميشه!!! ![]()
خوب حالا چند تا سؤال پيش مياد اين
وسط:
1) طوله درخت چقدره اگه راست می گین؟!
2) اضافه کردن ، حذف کردن يه آدم از چه orderi يه ؟!
3) مرتب کردنشون از چه orderi يه ؟!
4) ثابت کنين تويه طبقه ی hام از درخت سقف (n /
(2^h+1)) آدم هست (برگا طبقه ی اولن ريشه طبقه ی آخر!
n ام تعداد
آدماس!)
چيه نکنه منتظره جوابم هستين؟!
نخيرم ازين خبرا نيست برين فکر
کنين![]()
پ.ن : اگه کد بلدين کدشم بزنين آسونه بگين منم کمکتون کنم
![]()
آقا تهش اينکه صحنه رو ترک نکنين من پشتتونم ![]()
سلام ملت(!) چطورین!؟
راستش من نمی دونستم که باید الگوریتم در چه حد بذارم و در چه سطحی باشه بهتره ولی چون قول داده بودم،این پستو گذشتم!
حتما توی کامنتاتون راجع به اینکه سطحش چطور بود و کلا خوب بود یا بد،بگین!(لطفا اگه خیلی به نظرتون پائین بود,به خودتون نگیرین!مشکل از منه!
)
اینم الگوریتم مرتب سازی آرایه ها:
۱.مرتب سازی انتخابی(selection sort):
این طوریه که اول میاد کوچکترین عدد آرایه رو پیدا میکنه و در اولین خانهٔ آرایه میذاره.بعد عدد دوم و به همین ترتیب تا بزرگترین عدد.
Order این الگوریتم،n^2 هست.
۲.مرتب سازی حبابی: (bubble sort)
در این روش،هر عدد رو با عدد بعدیش مقایسه میکنیم،اگه اولی بزرگتر از دومی بود جاشونو عوض میکنیم و دومی رو با سومی مقایسه میکنیم تا به آخرین عدد برسیم.بعد دوباره برمیگردیم و از اول این کارو میکنیم و اینقدر ادامه میدیم که به ترتیب اصلی برسیم.
order این الگوریتم هم،n^2 هست.
۳. مرتب سازی درجی(insertation sort):
این الگوریتم اول ۲ عدد اول رو مرتب میکنه،بعد عدد سومو با اولی و دومی مقایسه میکنه.اگه از اولی کوچکتر بود،این عدد رو در جای اول میذاره و بقیهٔ عددها رو یکی به جلو هل میده.اگه از عدد اول بزرگتر و از عدد دوم کوچکتر بود،اونو بین اولی و دومی میذاره و دومی رو به راست هل میده در غیر این صورت جاشو تغییر نمیده و به سراغ عدد بعدی میره.در این روش ،هر عدد با همهٔ عددهای قبلیش مقایسه میشه پس Order اش،n^2 میشه.
فعلا همین کافیه و مطالب بعدی هم به نظرای شما بستگی داره!
حتما هم بگین که آیا با الگوریتم های گراف ها موافقین یا نه!
پ.ن:این بهنویس هم دیکتش دست کمی از من نداره ها!![]()
بلاخره بعد از کلی تلاش و کوشش(!) به جواب سوالم که اتفاقا سوال خیلیای دیگه هم بود رسیدم!
سومیا هم می تونن در المپیاد کامپیوتر شرکت کنن!
برای اطمینان بیشتر هم اینو نگاه کنید!
www.ysc.ac.ir/faq.aspx
بعد بگین که به نظر شما اینطوری بهتره یا بدتر؟!
-----------------------------------------------------------------------------------------------------
آقا یه کمی این پست سوتی شد همونطور که اکثرا
میدونین تا ۴ ساله پیش اینطوری بود که ۳ومیهاام میدادن و از آنجایی که
کسی به سایت باشگاه اهمیت نمیده این از قبلنا update نشده و اطلاعاتش
مربوط به سالها پیشه که هیچ انسانی در کرهٔ زمین نمیزیسته میباشد رکسانا
من به عنوان نویسنده ی جدید یاسین(!) اعلام وجود می کنم! اومدم که این کشتی به گل(gel) نشسته رو نجاتش بدم!:D می دونم کار سختیه ولی ممکنه!:D
سعی خودمو می کنم که اینجا دوباره بشه "وبلاگ تخصصی المپیاد کامپیوتر!"
خوب دیگه فعلا چیزی به ذهنم نمی رسه فقط اینکه اگه پیشنهادی واسه اینکه بهتر بشه دارید یا مطلب جالبی مد نظرتون هست بگید تا بذارم!
همین فعلا.... خوش باشید!:D


