Upload
samaher-hussein
View
5
Download
2
Embed Size (px)
Citation preview
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
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
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
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
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
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
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