الگوریتم سورت

happymoj

Active Member
ارسال ها
346
لایک ها
150
امتیاز
43
#1
من می خواستم بدونم کلا بهترین الگوریتم های سورت چیا هستن
و یا اصلا کلا بهترین الگوریتم سورت معنا داره یا نه
و ضمنا می شه ثابت کرد یه الگوریتم بهتره و از اون بهتر اصلا وجود نداره ( مخصوصا برای سورت)
 
ارسال ها
199
لایک ها
268
امتیاز
0
#2
پاسخ : الگوریتم سورت

به طورِ کلی نمی تونیم بگیم کدوم بهتره. ولی در کل میشه الگوریتم‌های خوب سورت رو به صورت زیر نوشت:
1. مرتب سازی سریع (اردر مشخصی نداره. از n تا n^2 ممکنه)
2. مرتب سازی توده ای(هیپ سورت) که اردرش nlg(n) هست.
3. مرتب سازی ادغامی که اردرش مثل هیپ سورت هست.
4. مرتب سازی حبابی با اردر n^2
5. مرتب سازی درجی با اردر n^2

مثلا خود c++ برای n های بزرگ، مرتب سازی سریع رو به کار می گیره.
 

hoco.hc

New Member
ارسال ها
388
لایک ها
267
امتیاز
0
#3
پاسخ : الگوریتم سورت

فکر کنم اثبات می شه که بهترین سورت اردرش از n log n هستش.
تو کد های معمولی بهتره از تابع سورت ( توی فایل algorithm ) استفاده کنی. سرعتش خیلی خوبه.
ولی لازمه که بلد باشی خودت کد های سورت رو بنویسی، چون بعضی مواقع باید یه جور خاص از تابع سورت استفاده کنی.
 
ارسال ها
199
لایک ها
268
امتیاز
0
#4
پاسخ : الگوریتم سورت

ضمنا می‌تونی از دستور بسیار مفید سورت با سه آرگومان استفاده کنی. سورت معمولی در c++ دو آرگومان داره.
sort(array + i, array + j)
ولی سورت با سه آرگومان به تو این اختیارات رو می ده که آرایه رو بر حسب چه چیزی سورت کنی.
sort(array + i, array + j, compare)
اگه توضیح بیش تر می خواین بگین
 

happymoj

Active Member
ارسال ها
346
لایک ها
150
امتیاز
43
#5
پاسخ : الگوریتم سورت

اگه می شه یکی یکم بیشتر توضیح بده
ضمنا اینا توی کدوم کتاب فارسی نوشته لطفا منبع با ذکر صفحه بگید:89:
 

hoco.hc

New Member
ارسال ها
388
لایک ها
267
امتیاز
0
#8
پاسخ : الگوریتم سورت

نگاه کن، یه توضیح کوچیک راجع به الگوریتم ها و اردراشون می دم.

الگوریتم هایی که بر مبنای مقایسه هستند ( یعنی فقط دو مقدار a وb را می گیرند و مقایسه اشون می کنند ) از اردر nlgn هستند. ( اگه خواستید بگید اثباتش رو هم بگم ) .
اما دو تا الگوریتم سورت باحال هستند که بر پایه مقایسه نیستند و از اردر n هستند. یکیشون رادیکس سورت، و اون یکی باکت سورت. ( فکر کنم )

( اگه خواستید بگید توضیح بدم )
 
بالا