7
1 Data Structures Notes for Lecture 18 Introduction of Sorting By Samaher Hussein Ali 2007-2008 Sorting ﺣﻘﻞ ﻗﻴﻤﺔ وﻓﻖ اﻟﺒﻴﺎﻧﻴﺔ اﻟﻌﻨﺎﺻﺮ ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﺗﻨﻈﻴﻢ ﻋﻤﻠﻴﺔ هﻮ اﻟﺘﺮﺗﻴﺐ) ﺣﻘﻮل ﻣﺠﻤﻮﻋﺔ او( ﺗﻨﺎزﻟﻴﺔ او ﺗﺼﺎﻋﺪﻳﺔ ﺑﺼﻮرة ﺑﺎﻟﻤﻔﺘﺎح ﻳﺴﻤﻰ. هﻮ اﻟﺘﺮﺗﻴﺐ ﻣﻦ واﻟﻐﺮض: - 1 . ﻟﺰ ﻣﺎ ﻋﻨﺼﺮ ﻋﻦ اﻟﺒﺤﺚ ﺧﻮارزﻣﻴﺎت آﻔﺎءة ﻳﺎدة. اﻟﻤﻠﻔﺎت ﻣﻌﺎﻟﺠﺔ ﻟﺘﺒﺴﻴﻂ2 . اﻟﻘﻴﻮد ﺗﺸﺎﺑﻪ ﻣﺸﻜﻠﺔ ﻟﺤﻞ3 ﻣﻨﻬﺎ اﻟﺘﺮﺗﻴﺐ ﻟﺨﻮارزﻣﻴﺎت ﺗﺼﻨﻴﻔﺎت ﻋﺪة وﻳﻮﺟﺪ: - اﻟﻤﻘﺎرﻧﺎت ﺗﻌﺘﻤﺪﺧﻮارزﻣﻴﺎت.1 . اﻟﺘﻮزﻳﻊ ﺗﻌﺘﻤﺪ ﺧﻮارزﻣﻴﺎت2 . وﺗﺘﻀﻤﻦ اﻟﺨﺰن اﺟﻬﺰة ﻋﻠﻰ ﺗﻌﺘﻤﺪ ﺧﻮارزﻣﻴﺎت: - 3 أ. اﻟﺘﺮ ﺧﻮارزﻣﻴﺎت اﻟﺪاﺧﻠﻲ ﺗﻴﺐ ب. اﻟﺪاﺧﻠﻲ اﻟﺘﺮﺗﻴﺐ ﺧﻮارزﻣﻴﺎت اﻟﺘﺮﺗﻴﺐ ﻋﻤﻠﻴﺔﺧﻄﻮات* اﻟﺘﺎﻟﻴﺔ اﻟﺨﻄﻮات ﺗﺘﻀﻤﻦ اﻧﻮاﻋﻬﺎ ﺑﻤﺨﺘﻠﻒ اﻟﺘﺮﺗﻴﺐ ﺧﻮارزﻣﻴﺎت1 . اﻟﻤﻔﺘﺎح ﺣﻘﻞ ﻗﺮاءة اﻟﺠﺪﻳﺪ اﻟﺘﺮﺗﻴﺐ ﻓﻲ اﻟﻌﻨﺼﺮ ﻣﻮﻗﻊ اﺳﺘﻨﺘﺎج.2 اﻟﺠﺪﻳﺪ اﻟﻤﻮﻗﻊ اﻟﻰ اﻟﻌﻨﺼﺮ ﻧﻘﻞ.3 اﻟﺘﺮ ﺧﻮارزﻣﻴﺎت آﻔﺎءة ﻗﻴﺎس اﺳﺲ ﺗﻴﺐ* ﻣﻦ اﻟﺨﻮارزﻣﻴﺔ ﺗﺤﺘﺎﺟﻪ ﻣﺎ ﻣﻌﺪل ﻣﻘﺎرﻧﺎت.1 اﻟﺨﻮارزﻣﻴﺔ ﺗﺤﺘﺎﺟﻪ ﻣﺎ ﻣﻌﺪل اﻟﺘﺤﺮﻳﻜﺎت او اﻟﻨﻘﻼت ﻣﻦ.2 اﻟﺨﻮارزﻣﻴﺔ ﺗﺤﺘﺎﺟﻪ ﻣﺎ ﻣﻌﺪل اﻟﺘﺒﺪﻳﻼت ﻣﻦ.3 ﻣﻌﺪل اﻟﺘﺨﺰﻳﻨﻲ اﻟﺤﺠﻢ.4 اﻟﺘﺮﺗﻴﺐ ﺧﻮارزﻣﻴﺎتѧ اﻟﺮﺋﻴﺬاآﺮةѧ اﻟѧﺪثѧ ﻳﺤﺬيѧ اﻟѧ ﺑﺎﻟﺘﺮﺗﻴﺪاﺧﻠﻲѧ اﻟѧ ﺑﺎﻟﺘﺮﺗﻴﺼﺪѧ وﻧﻘ اﻟﺪاﺧﻠﻲﺒﺔѧ ﻟﻠﺤﺎﺳ ﻴﺔﺎتѧ اﻟﺒﻴﺎﻧѧ ﺣﺠﻮنѧ ﻳﻜﺪﻣﺎѧ ﻋﻨ ﻣﻨﺎﺳﺒﺎ) آﺒﻴﺮا ﻟﻴﺲ( ﻃﺮق ﺧﻤﺲ اﻟﺨﻮارزﻣﻴﺎت هﺬﻩ وﺗﺘﻀﻤﻦ: - Internal Sort Algorithm External Sort Algorithm Internal Sort Algorithm

Lecture 18

Embed Size (px)

Citation preview

Page 1: Lecture 18

1

Data Structures

Notes for Lecture 18 Introduction of Sorting

By Samaher Hussein Ali

2007-2008

Sorting

. يسمى بالمفتاح بصورة تصاعدية او تنازلية) او مجموعة حقول (الترتيب هو عملية تنظيم مجموعة من العناصر البيانية وفق قيمة حقل

-:والغرض من الترتيب هو

يادة آفاءة خوارزميات البحث عن عنصر مالز. 1

لتبسيط معالجة الملفات . 2

لحل مشكلة تشابه القيود . 3

-:ويوجد عدة تصنيفات لخوارزميات الترتيب منها

1.خوارزميات تعتمد المقارنات

خوارزميات تعتمد التوزيع. 2

-:خوارزميات تعتمد على اجهزة الخزن وتتضمن. 3

تيب الداخليخوارزميات التر. أ

خوارزميات الترتيب الداخلي . ب

* خطوات عملية الترتيب خوارزميات الترتيب بمختلف انواعها تتضمن الخطوات التالية

قراءة حقل المفتاح. 1

2. استنتاج موقع العنصر في الترتيب الجديد

3. نقل العنصر الى الموقع الجديد

تيباسس قياس آفاءة خوارزميات التر * مقارنات معدل ما تحتاجه الخوارزمية من .1

من النقالت او التحريكاتمعدل ما تحتاجه الخوارزمية .2

من التبديالت معدل ما تحتاجه الخوارزمية .3

الحجم التخزينيمعدل .4

س خوارزميات الترتيب ذاآرة الرئي ذي يحدث في ال داخلي بالترتيب ال صد بالترتيب ال ات ية للحاسبة الداخلي ونق م البيان دما يكون حج عن

-:وتتضمن هذه الخوارزميات خمس طرق ) ليس آبيرًا(مناسبًا

Internal Sort Algorithm

External Sort Algorithm

Internal Sort Algorithm

Page 2: Lecture 18

2

1. طرق الترتيب باستخدام التبديالت

وتتضمن عدة خوارزميات

خوارزمية الترتيب الفقاعي *

* خوارزمية الترتيب السريع

*خوارزمية شيل

*خوارزمية شيكر

الزاحةخوارزمية ا *

* خوارزمية باتجر

* خوارزمية الترتيب الفردي والزوجي

الضافة طرق الترتيب با .2

وتتضمن عدة خوارزميات

* الترتيب باالضافة الى القائمة

* الترتيب بحساب العنوان

* الترتيب باالضافة الثنائي

* الترتيب باالضافة الخطي

دمجيب باستخدام ال طرق الترت .3

وتتضمن عدة خوارزميات

*خوارزمية الدمج البسيط

*خوارزمية الدمج المستقيم

*خوارزمية الدمج الطبيعي

التوزيعي طرق الترتيب .4

-:وتتضمن خوارزمية واحدة فقط هي

* االساس خوارزمية ترتيب

اري بواسطة االخت طرق الترتيب .5

-:وتتضمن عدة خوارزميات

ار الخطي ي خوارزمية االخت *

ار التربيعي يخوارزمية االخت *

*خوارزمية الترتيب الكومي

*خوارزمية الترتيب الشجري

ار الخطي بالتبديالت يخوارزمية االخت *

ار الخطي بالعد يخوارزمية االخت *

Bubble Sort (Exchange)Algorithm

Quick Sort Algorithm

Shell Algorithm

Shaker Algorithm

Shifting Algorithm

Batcher Algorithm

Add-Even Sort Algorithm

Radix Sort Algorithm

Page 3: Lecture 18

3

ن لدينا آمية آبيرة من البيانات التتسعها الذاآرة الرئيسية يتم خزنها على احد وسائل الخزن اذا آا فكرتهاخارجي الخوارزميات الترتيب

. الثانوية ثم تقسم الى مقاطع ويتم ترتيبها وفق احدى طرق الترتيب الداخلي ثم يتم الدمج بين هذه المقاطع

-:ويتضمن الترتيب الخارجي الطرق التالية

ن الترتيب بالدمج ذو المساري*

الترتيب بالدمج متعدد المسارين *

الترتيب بالدمج المتوازي ذي المسارين *

الترتيب بالدمج متعدد االطوار *

-:فكرتها

في القائمة وتبديل مواقعهما وخالل آل دورة من المقارنات والتبديالت يتحرك العنصر حتى يستقر هي مقارنة آل عنصرين متجاورين

. وقع المناسبفي الم

.يمثل عدد العناصر( ) من الدورات للحصول على عملية الترتيب وحيث ان ( ) حيث اننا نحتاج الى

.سميت بالترتيب الفقاعي وذلك الن االرقام الصغيرة تطفو الى االعلى واالرقام الكبيرة تستقر في االسفل

استخدام الترتيب الفقاعي رتب عناصر القائمة التالية ب-:مثال

66 5 17 93 41 11 54 43

=اآبر عدد من المقارنات

مقارنة28بما ان لذلك يجب ان اليزيد عدد المقارنات عن

-:خطوات الحل

-:المرحلة االولى

يث يكون االصغر قبل االخر ونستمر لحين ونبدل موقعهما بح) (مع العنصر في الموقع ) ( نقارن العنصر في الموقع

الوصول الى مقارنة العنصر في الموقع الثاني مع العنصر في الموقع االول

- :الثانيةالمرحلة

نقارن بنفس الطريقة العنصر في الموقع الى العنصر في الموقع الثاني

- :الثالثةالمرحلة

من الدورات( ) نكرر الخطوات اعاله

External Sort Algorithm

Two-Way-Merge K-Way-Merge Balanced Two-Way-Merge

Poly phase Two-Way-Merge

Bubble Sort Algorithm خوارزمية الترتيب الفقاعي

N-1 N

N(N-1)/2 N=8

N N-1

N

N-1

Page 4: Lecture 18

4

الدورة

)7( الدورة

)6( الدورة

)5( الدورة

)4(

الدورة

)3( الدورة

)2( الدورة

)1(

مقارنة

(7)

مقارنة

(6)

مقارنة

(5)

مقارنة

(4)

مقارنة

(3)

مقارنة

(2)

مقارنة

)1( القائمة

5 5 5 5 5 5 5 5 43 43 43 43 43 43 43

11 11 11 11 11 11 43 43 5 54 54 54 54 54 54

17 17 17 17 17 43 54 54 54 5 11 11 11 11 11

41 41 41 41 43 54 11 11 11 11 5 41 41 41 41

43 43 43 43 54 17 41 41 41 41 41 5 93 93 93

54 54 54 54 41 41 93 93 93 93 93 93 5 17 17

66 66 66 66 66 93 17 17 17 17 17 17 17 5 5

93 93 93 93 93 66 66 66 66 66 66 66 66 66 66

Public sub Bubble()

For i=1 to n-1

For j= n to i+1

If a(j)<a(j-1)

X=a(j)

A(j)=a(j-1)

A(j-1)=x

End if

Next j

Next i

End sub

-:فكرتها

ر ة لكل عنصرين او اآث ة وتجري مقارن سافة ليست متجاورة تقسيم القائمة الى مسافات وهمي دارها الم سافة محددة مق دة بم ا متباع وانم

حتى تترتب القائمةالمقارنة والتغيرالوهمية وهكذا يتم تغير المسافة الوهمية وتجرى عملية

شيل رتب عناصر القائمة التالية باستخدام ترتيب -:مثال

43 17 5 41 93 54 11 66

-:خطوات الحل

نختار مسافة وهمية مقدرها ونضع العناصر االآبر على جهة اليمين واالصغر على اليسار-:اوًال

Shell Sort Algorithm خوارزمية ترتيب شيل

Gap=4

Page 5: Lecture 18

5

43 17 5 41 93 54 11 66

43 17 5 41 93 54 11 66

43 17 5 41 93 54 11 66

43 17 5 41 93 54 11 66

نختار مسافة وهمية مقدرها -: -:ثانيًا

43 17 5 41 93 54 11 66

5 17 11 41 43 54 93 66

Result

5 17 11 41 43 54 93 66

نختار مسافة وهمية مقدرها -: -:ثالثًا

5 11 17 41 43 54 66 93

-:فكرتها

ل من ) االفضل ان يكون العنصر الوسطي (Xاختيار عنصر من عناصر القائمة المعطاة مثل ه في xثم نجعل العناصر التي قيمتها اق قبل

ل العنصر xيمتها اآبر من القائمة اما العناصر التي تكون ق ع قب دنا x بعده ثم تتم عملية المسح التصاعدي لعناصر القائمة التي تق اذا وج ف

م نجري xثم نمسح تنازليًا عناصر القائمة الواقعة بعد ) أي نضع اشارة (عنصر اآبر منه نحدده ضًا ث فان وجدنا عنصر اقل منه نحدده اي

.ب القائمةحتى تترتعملية التبديل بينهما ونستمر

السريعترتيبال رتب عناصر القائمة التالية باستخدام -:مثال

43 54 11 41 93 17 5 66

ر االصغر االآب

Gap=2

Gap=1

Quick Sort Algorithm خوارزمية الترتيب السريع

X

Page 6: Lecture 18

6

-:خطوات الحل

:ولىالمرحلة اال

نختار -:اوًال

اذن تبقى مكانها 41>66

5 اذن نضع اشارة على الـ 41<5

43 اذن نضع اشارة على الـ 41>43

-:نجري عملية التبديل فتصبح القائمة هي

5 54 11 41 93 17 43 66

17 اذن نضع اشارة على الـ 41>17

54 اذن نضع اشارة على الـ 41<54

-:ل فتصبح القائمة هينجري عملية التبدي

5 17 11 41 93 54 43 66

93>41 اذن تبقى مكانها

11<41 اذن تبقى مكانها

:المرحلة الثانية

نأخذ قائمة االعداد التي هي اآبر من -:اوًال

93 54 43 66

نختار لها .ا

66>54 اذن تبقى مكانها

43نضع اشارة على الـ اذن 54>43

93 اذن نضع اشارة على الـ 54<93

-:نجري عملية التبديل فتصبح القائمة هي

نختار بالنسبة الى القائمة . ب

93 66

-:فتصبح القلئمة

نطبق نفس الخطوات بالنسبة الى القائمة

5 17 11

43 54 93 66

43 54 66 93

X= 41

X

X=54

X=93

Page 7: Lecture 18

7

-:مالحظات عامة

عندما نضع اشارة على عنصر فانه ينتقل الى الجهة االخرى من القائمة . 1

( يكون اآبر عدد من المقارنات الى هذه الطريقة هو ) .2

3. هذه الطريقة تكون مفيدة الى للقوائم التي تكون غير مرتبة الى حد آبير وغير عملية للقوائم شبه المرتبة

Public sub Quicksort(byref list as string, byref F as integer, byref L as integer )

Dim I as integer

Dim j as integer

Dim x as integer{or any other type}

I=f

J=L

X=list((i+j) / 2)

Repeat

While list(i)<x do i=i+1

While x< list(j) do j=j+1

If i<=j then

Swap(list(i),list(j))

I=i+1

J=j+1

End if

Loop untie i<j

If f<j then Quicksort(list,f,j)

End if

If i<L then Quicksort(list,i,L)

End if

End sub

2N*Ln N