54
ﻓﺼﻞ: ﻣﻌﺮﻓﯽ اﻟﮕﻮرﯾﺘﻢ ﻫﺎی ﻣﺮﺗﺐ ﺳﺎزی و ﺗﺤﻠﯿﻞ ﭘﯿﭽﯿﺪﮔﯽ آﻧﻬﺎ

è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

: فصل معرفی الگوریتم های مرتب سازی

و تحلیل پیچیدگی آنها

Page 2: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

:انواع حافظه اصلی -۱جانبی -۲

Page 3: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

انواع الگوریتم های مرتب سازی داخلی -۱خارجی -۲

Page 4: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

...ادامه انواع الگوریتم های مرتب سازی اگر : مثال

باشد سلول ۱۰۰ دارای ، حافظه - باشد عنصر ۱۱۰ ، شدن مرتب برای اطالعاتی اقالم تعداد - باشد می خارجی جا این در سازی مرتب مکانیزم -

Page 5: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

انواع مرتب سازی : ایدار پ.۱: دار ناپ.۲

Page 6: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

: مثال Number 17 5 13 21 13 2 14Location 1 2 3* 4 5** 6 7

After Sort

Number 2 5 13 13 14 17 21Location 6 2 3 5 7 1 4

، حفظ شده است ۱۳مکان اصلی اولین

Page 7: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

مرتب سازي درج ساده یا

. مي باشد پايدارسازي ، نوع مرتب

آرایه الف

بآرایه

Page 8: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

: اجزای الگوریتم مرتب سازی درجی تابع .۱تابع .۲

Page 9: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه اجزای الگوریتم مرتب سازی درجی : پیاده سازی تابع ١

نام آرایه تعداد عناصر آرایه اضافه شود aعنصر

Page 10: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه - پیاده سازی تابع اجزای الگوریتم مرتب سازی درجی : مثال

در آرایه فوق ، عناصر آرایه چه شکلی خواهند داشت ؟ ۱۵پس از درج عدد

Page 11: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه - پیاده سازی تابع اجزای الگوریتم مرتب سازی درجی نام آرایه تعداد عناصر آرایه اضافه شود aعنصر

N=1 N=2 N=3 N=41 13 17 25list

If a=15

N=1 N=2 N=3 N=41 13 17 25

i=i-1

list

N=1 N=2 N=3 N=41 13 17 25

i=i-1

listi=i-1

N=1 N=2 N=3 N=41 13 15 17 25list

Step 0

Step 1

Step 2

Step 3a

Page 12: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه - پیاده سازی تابع اجزای الگوریتم مرتب سازی درجی : الگوریتم پیچیدگی

. آید می بدست ، باشد مرتب آرایه اگر - . آید می بدست ، نباشد مرتب آرایه اگر -

Page 13: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه -اجزای الگوریتم مرتب سازی درجی : Insertion _ Sortده سازي تابع پیا.۲

Page 14: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

: جی پیچیدگی الگوریتم مرتب سازی در ... ادامه پياده سازي تابع -اجزاي الگوريتم مرتب سازي درجي

Insert( list , n , a ) { i =n While ( a < list[ i ]){ list[i+1]=list[ i ]i=i-1; } list[ i+1 ] = a; }

عنصر دارای اضافه نمودن بدترین حالت بهترین حالت

مرتبه نهایی الگوریتم مرتب سازی درجی

Page 15: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

...ادامه مرتب سازي درج ساده يا

حالتی است که آرایه مرتب باشد : بهترین حالت 2. لیست بصورت نزولی باشد و بخواهیم صعودی شود : بدترین حالت 2: حالت متوسط

) Insertتابع ( هزینه درج یک عنصر ) Insertion _ Sortتابع ( عنصر nهزینه درج

Page 16: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

ادغام دو آرايه

Page 17: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه ادغام دو آرايه سوم آرایه مرتبه ، باشد مرتب آرایه اگر -

: آنگاه ، باشد یکسان آرایه اندازه ، باشد اگر -

Page 18: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه ادغام دو آرايه

،مرتب نباشد آرایه اگر سوم برابر با مرتبه آرایه

Page 19: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه ادغام دو آرايه : نکته . نمی باشدسازی ، مرتب عمل

Page 20: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه ادغام دو آرايه شروع آریه اول

شروع آریه دوم M+1

Page 21: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

الگوریتم مرتب سازی : اجزای الگوریتم

گوریتم ال.۱یتم گور لا.۲

Page 22: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

)ادغام ( الگوریتم -۱

5 6 7 83 4 9 103

Page 23: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

...ادامه ) ادغام ( الگوریتم 5 6 7 8

3 4 9 10

3

Page 24: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

...ادامه ) ادغام ( الگوریتم 2 3 5 6

4 7 8 9

2

Page 25: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

...ادامه ) ادغام ( الگوریتم

Page 26: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

لگوريتم ا.۲

Page 27: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

پیچیدگی الگوریتم 17 19 20

17 21 22

17 17

Page 28: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه - پیچیدگی الگوریتم : مرتبه الگوریتم -۱

بهترین حالت ) الف سوم آرایه ایجاد و ادغام مرتبه ، باشد مرتب آرایه اگر -

: آنگاه ، )باشد یکسان آرایه اندازه ( باشد اگر * حالت بدترین ) ب

2 سوم آرایه ایجاد و ادغام مرتبه ، نباشد مرتب آرایه اگر -2 : آنگاه ، )باشد یکسان آرایه اندازه ( باشد اگر *

Page 29: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه - پیچیدگی الگوریتم : مرتبه الگوريتم -٢

Page 30: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

با هم و الگوریتم ۲مرتبه

بهترین حالت

مرتبه الگوریتم مرتبه الگوریتم

Page 31: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

بدترین حالت

مرتبه الگوریتم مرتبه الگوریتم

...ادامه با هم و الگوريتم ٢مرتبه

Page 32: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

الگوریتم مرتب سازی سریع . شود مي انتخاب محور عنصر عنوان به اول عنصر -

. شوند مي مقایسه محور با لیست عناصر تمام - . گیرد می قرار چپ سمت باشد کوچکتر محور از عنصري اگر - . گیرد مي قرار راست سمت باشد بزرگتر محور از اگرعنصری -

Page 33: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه الگوریتم مرتب سازی سریع لیست ۲ محور عنصر از بزرگتر و کوچکتر عناصر -

.آورند مي وجود به را مجزا بلیق عملیات آمده بدست هاي لیست از هریك براي -

شود می تکرار

Page 34: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

محور Pivot... ادامه الگوریتم مرتب سازی سریع

Page 35: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه الگوریتم مرتب سازی سریع :اجزای الگوریتم مرتب سازی سریع

) ( الگوریتم .۱) ( وریتم الگ.۲

Page 36: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

.. .ادامه الگوریتم مرتب سازی سریع 15 7 12 36 5

محور

) (تقسیم نمودن آرایه الگوریتم -۱

Page 37: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

.. .ادامه الگوریتم مرتب سازی سریع شروع اندیس

پایان اندیس الگوریتم مرتب سازی -۲

Page 38: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

.. .ادامه الگوریتم مرتب سازی سریع پیچیدگی الگوریتم مرتب سازی سریع

نیمه سمت چپ محور راست محور نیمه سمت مرتبه

Page 39: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه -الگوريتمپيچيدگي الگوریتم مرتب سازی سریع ، باشد ۲/۳ راست سمت آرایه و ۱/۳ چپ سمت آرایه ، شود فرض اگر -

: داریم را زیر پیچیدگی

Page 40: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه -الگوريتمپيچيدگي الگوریتم مرتب سازی سریع ۹/۱۰ راست سمت آرایه و ۱/۱۰ چپ سمت آرایه ، شود فرض اگر -

: داریم را زیر پیچیدگی ، باشد

Page 41: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه -الگوریتمپیچیدگی الگوریتم مرتب سازی سریع : باشد کوچکتر همه از که شود انتخاب محوری ، شود فرض اگر -

ین عدد کوچکتر

سایر اعداد

: باشد بزرگتر همه از که شود انتخاب محوری ، شود فرض اگر -

بزگترین عدد سایر اعداد

Page 42: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه -الگوریتمپیچیدگی الگوریتم مرتب سازی سریع : با است برابر آن مرتبه ، باشد مرتب آرایه اگر

شود می تا ۱ از اعداد جمع

Page 43: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه -الگوریتمپیچیدگی الگوریتم مرتب سازی سریع : نتیجه

بدترین عسری سازی مرتب الگوریتم ، باشد مرتب آرایه که زمانی - . دارد را یعنی پیچیدگی

بهترین یعسر سازی مرتب الگوریتم ، نباشد مرتب آرایه که زمانی - . دارد را یعنی پیچیدگی

Page 44: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

الگوریتم مرتب سازی شمارشی : الزم است شرط ۲برای این نوع مرتب سازی

.باشند عدد صحیح نوع همه عناصر از .۱ .کوچکتر یا مساوی هستند عددی مثل عناصر از فرض کنیم همه .۲

Page 45: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه -الگوریتم مرتب سازی شمارشی

Page 46: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

2 1... ه ادام -الگوریتم مرتب سازی شمارشی 3 4 5 6 7 8

0 0 0 0 0 0

2 0 2 3 0 10 1 2 3 4 5

2 2 4 7 7 80 1 2 3 4 5

0 30 1 2 3 4 5 6 7 8

60 1 2 3 4 5 مي شود ٦معادل يكي كم مي شود و

c

c

c

c

B

Page 47: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ه ادام -الگوریتم مرتب سازی شمارشی . می باشد پایدارالگوریتم شمارشی ،

اگر حلقه آخر در الگوریتم شمارشی ،گر پیاده سازی شود ، دی صعودیبصورت

. پایدار نمی باشد

Page 48: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ه ادام -الگوریتم مرتب سازی شمارشی ،عددهای تکراری الگوریتم شمارشی برای

.بسیار خوب می باشد اعداد بزرگ الگوریتم شمارشی برای

. مناسب نمی باشد

Page 49: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ه ادام -الگوریتم مرتب سازی شمارشی : در حالت کلی پیچیدگی این الگوریتم برابر است با -

:باشد و اگر

مرتبه اجرایی آرایه اندازه آرایه

Page 50: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ه ادام -الگوریتم مرتب سازی شمارشی : سوال

حالی در ، است شده ، شمارشی الگوریتم چرا رینبهت که شده ثابت قبلی های الگوریتم در که

؟ باشد می پیچیدگی

Page 51: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

شعاعی الگوریتم مرتب سازی .وندشمرتب مي کم ارزش ترین مکانشان عناصربراساس ابتدا -.می شوند مرتب ارزش بیشتر اساس مکان با سپس بر -. پیدا می کند ادامه مکان پر ارزش ترین عملیات فوق تا -.دکردناولیه از این مکانیزم استفاده می حسابهای ماشین -

Page 52: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه شعاعی الگوریتم مرتب سازی

می کند اعداد را مرتبستون به ستون این الگوریتم از رقم یکان

:بشماریم را ۹تا ۰فرض کنید ، فقط بتوانیم اعداد : در نظر بگیرید روبرو را اعداد

Page 53: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه شعاعی الگوریتم مرتب سازی

۱ستون ۲ستون ۳ستون ۴ستون

Page 54: è ² è Û ( ? ã èü N èã U è M p Xâ Jù èä ? 8 N W è è è …...è T Nù ù èã èü N èã U è M p Xâ Jù è 5ù X Qù è áù è ² è I N è è # ý è I X K è ´

... ادامه شعاعی الگوریتم مرتب سازی : الگوریتم اجرایی مرتبه

تعداد ارقام تعداد اعداد پیچیدگی هر مرحله