Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 23

‫مقرر هياكل بيانات‪DATA STRUCTER‬‬

‫محاضرة رقم (‪)3‬‬


‫خوارزميات الترتيب الفقاعي‬
‫والترتيب باالختيار‬

‫‪1‬‬ ‫أ‪.‬رنده عبد الرحمن محمد خالد‬


‫مقدمة‬
‫يعتبر ترتيب المعلومات من االستخدامات المتكررة في معالجة البيانات ونعني بترتيب‬ ‫‪‬‬
‫المعلومات وضع السجالت حسب ترتيب معين ويتم ذلك بالطبع عن طريق ترتيب مفاتيح‬
‫السجالت ترتيبا تصاعديا او تنازليا ‪.‬‬
‫يمكن ان يكون المفتاح رقما مثل رقم الطالب او رقم الموظف فان ترتيب المفتاح يتم من‬ ‫‪‬‬
‫اصغر رقم الي اكبر رقم وبهذا تكون سجالت الطالب او الموظفين تم ترتيبها‬
‫تصاعديا ‪.‬والعكس‬
‫وبالمثل اذا كان المفتاح باألسماء فان الترتيب يكون ابجديا وعندما يتساوى المفتاحان في‬ ‫‪‬‬
‫الحرف االول ينظر للحرف الثاني واذا تساوي في الحرف الثاني ينظر الي الحرف الثالث‬
‫وهكذا‬
‫من الضروري اال يتطابق اسمان في كل الحروف واال يكون حقل االسم غير صالح ليكون‬ ‫‪‬‬
‫مفتاحا ‪,‬الن هنالك شرطا اساسيا لمفتاح السجل وهو ان يكون مفردا في التعبير عن السجل‬
‫لهذه المشكلة ال يفضل استخدام االسماء في المفاتيح ‪.‬‬ ‫‪‬‬

‫ان اهم استخدامات الترتيب هو تسهيل او تسريع عملية البحث عن سجل هذا اضافة الي‬ ‫‪‬‬
‫استخدامات اخري في ترتيب المستويات لألفراد مثل نتائج االمتحانات والمنافسات بين‬
‫الطالب والموظفين وعامة المنافسات مثل اولويات الحجوزات والطلبات والخدمات عموما‬
‫والتي تعطي اولوية لألول فالتالي وهكذا‬
‫‪10/24/2023‬‬ ‫‪2‬‬
‫خوارزميات الترتيب ‪Sorting Algorithms‬‬
‫هنالك خوارزميات عدة في ترتيب المعلومات بعضها معقدة جدا وعالية‬
‫الكفاءة ونعني بالكفاءة ان يتم الترتيب في اقل وقت ممكن وفي اقل‬
‫سعة تخزين ممكنة ومن اشهر واهم هذه الخوارزميات ‪:‬‬
‫‪ ‬الترتيب الفقاعي ‪Bubble Sort‬‬
‫‪ ‬الترتيب باإلدخال ‪Insertion Sort‬‬
‫‪ ‬الترتيب باالختيار ‪Selection Sort‬‬
‫‪ ‬الترتيب بالتجزئة ‪shell sorting‬‬
‫‪ ‬الترتيب السريع ‪quick sorting‬‬
‫‪ ‬الترتيب المقيد ‪heap sorting‬‬
‫‪ ‬الترتيب باألبدال ‪exchange sorting‬‬
‫‪ ‬الترتيب بالدمج ‪merge sorting‬‬
‫‪10/24/2023‬‬ ‫إعداد‪ :‬أ‪ .‬محمد الفقهاء‬ ‫‪3‬‬
‫الترتيب الفقاعي ( ‪)Bubble Sort‬‬
‫‪‬يعتبر االكثر واالبسط من حيث االستخدام ولكن يعاب‬
‫عليه انه بطئ جدا وذلك ألنه يتأثر بعدد العناصر التي‬
‫يراد ترتيبها‬
‫‪‬مبدأ العمل ‪-:‬‬
‫‪‬المرور على جميع العناصر المراد فرزها (ترتيبها)‪،‬‬
‫وعمل مقارنة بين العناصر المتجاورة وتبديل القيم‬
‫الغير مرتبة بحيث تحتل القيمة الكبرى الرتبة العليا ‪.‬‬
‫المصفوفة‪.‬‬
‫الخفيفة‬ ‫حيثفيانالنهاية‬
‫الفقاعات‬ ‫االكبر‬ ‫الترتيب العنصر‬
‫الفقاعي ‪:‬‬ ‫النهاية يصبح‬ ‫وفي‬
‫التسمية‪-:‬‬
‫تطفو على السطح و االثقل ترسو في القاع‪.‬‬
‫عدد جوالت عملية الترتيب ‪-:‬‬

‫اذا كانت مصفوفة عدد عناصرها ‪ n‬فاننا نحتاج الى‪n-1‬‬


‫جولة لترتيب المصفوفة حيث ‪-:‬‬
‫‪ -1‬الجولة االولى ‪ n-1 :‬عملية مقارنة‪.‬‬
‫‪ -2‬الجولة الثانية‪ n-2 :‬عملية مقارنة‪.‬‬
‫‪ -3‬الجولة الثالثة ‪ n-3 :‬عملية مقارنة‪.‬‬
‫‪ -4‬الجولة الرابعة ‪ n-4 :‬عملية مقارنة‪.‬‬
‫‪ -5‬الجولة االخيرة ‪ :‬مقارنة واحدة‪.‬‬
‫مالحظة ‪ :‬نمثل المصفوفة افقيا لتسهيل عمليات المقارنة‬
‫في الجوالت‪.‬‬
Bubble Sort

5 7 5 12 3 9

Pass 1 5 7 5 12 3 9

5 7 5 12 3 9

5 5 7 12 3 9

5 5 7 12 3 9

5 5 7 3 12 9
5 5 7 3 9 12

Pass 2 5 5 7 3 9 12

5 5 7 3 9 12

5 5 7 3 9 12

5 5 3 7 9 12
5 5 3 7 9 12

Pass 3 5 5 3 7 9 12

5 5 3 7 9 12

5 3 5 7 9 12
5 3 5 7 9 12

Pass 4 5 3 5 7 9 12

3 5 5 7 9 12
3 5 5 7 9 12

Pass 5 3 5 5 7 9 12

3 5 5 7 9 12 !!! Sorted
‫مثال ‪ :‬رتب عناصر المصفوفة التالية تصاعديا بطريقة الترتيب‬
‫الفقاعي؟‬
‫العنصر‬ ‫القيمة‬

‫)‪x( 0‬‬ ‫‪8‬‬

‫)‪X(1‬‬ ‫‪9‬‬

‫)‪X(2‬‬ ‫‪7‬‬

‫)‪X(3‬‬ ‫‪6‬‬
‫الجولة االولى‪ -:‬عدد المقارنات ‪3 = 1-4 :‬‬
‫)‪X(3‬‬ ‫)‪X(2) X(1‬‬ ‫)‪X(0‬‬

‫نقارن ‪ 9<8 8،9‬ال يتغير شيء‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪*9‬‬ ‫‪*8‬‬

‫نقارن ‪ 7>9 ، 9،7‬نبدلهما‬ ‫‪6‬‬ ‫‪*7‬‬ ‫‪*9‬‬ ‫‪8‬‬

‫تصبح‬ ‫‪6‬‬ ‫‪9‬‬ ‫‪7‬‬ ‫‪8‬‬

‫نقارن ‪ 6 <9 ، 9،6‬نبدلهما‬ ‫‪*6‬‬ ‫‪*9‬‬ ‫‪7‬‬ ‫‪8‬‬

‫لتصبح‬ ‫‪9‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬


‫الجولة الثانية‪-:‬عدد المقارنات = ‪2=2-4‬‬
‫)‪X(3‬‬ ‫)‪X(2) X(1‬‬ ‫)‪X(0‬‬

‫نقارن ‪ 7>8، 8،7‬نبدلهما‬ ‫‪9‬‬ ‫‪6‬‬ ‫‪*7‬‬ ‫‪*8‬‬

‫لتصبح‬ ‫‪9‬‬ ‫‪6‬‬ ‫‪8‬‬ ‫‪7‬‬

‫نقارن ‪ 6>8، 8،6‬نبدلهما‬ ‫‪9‬‬ ‫‪*6‬‬ ‫‪*8‬‬ ‫‪7‬‬


‫لتصبح‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪6‬‬ ‫‪7‬‬
‫الجولة الثالثة‪ :‬عدد المقارنات= ‪1=3-4‬‬
‫)‪X(3‬‬ ‫)‪X(2) X(1‬‬ ‫)‪X(0‬‬

‫نقارن بين ‪ ، 6>7 ، 7،6‬نبدلهام‬ ‫‪9‬‬ ‫‪8‬‬ ‫*‪6‬‬ ‫‪*7‬‬

‫لتصبح‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪7‬‬ ‫‪6‬‬

‫عدد المقارنات = عدد عناصر المصفوفة‪ -‬رقم الجولة‪.‬‬


‫خوارزمية‬
Bubble Sort

‫مصدر الصورة‬
http://vsmecollege.blogspot.com/2010/05/bubble-sort-bash-shell-programming-with.html

‫رنده عبد الرحمن محمد خالد‬/‫أ‬ ‫هياكل البيانات‬ 15


‫خوارزمية ‪Bubble Sort‬‬

‫)]‪algorithm BubbleSort(A[1..n‬‬
‫‪1. for i = 1 to n − 1 /* the i-th pass */‬‬
‫‪2. for j = 1 to n − i‬‬
‫‪3.‬‬ ‫]‪if A[j] > A[j + 1‬‬
‫]‪4. swap A[j] with A[j + 1‬‬
‫التكرار في السطر األول نستخدمه لتكرار المرور على العناصر‬ ‫‪‬‬

‫المراد ترتيبها‪.‬‬
‫التكرار في السطر الثاني يستخدم لتكرار فحص كل عنصرين‬ ‫‪‬‬

‫متجاورين‪ ,‬و هذا يتم في كل دوران‪.‬‬


‫‪16‬‬
‫الترتيب باالختيار ‪Selection Sort‬‬
‫مبدأ الخوارزمية ‪:‬‬
‫‪ ‬نجد اصغر عنصر في المصفوفة ‪.‬‬
‫‪ ‬نستبدله مع العنصر الموجود في الخانة االولي في المصفوفة ‪.‬‬
‫‪ ‬نجد ثاني اصغر عنصر ونستبدله مع العنصر الموجود في الخانة‬
‫الثانية في المصفوفة ‪.‬‬
‫‪ ‬نستمر هكذا حتي تصبح المصفوفة مرتبة ‪.‬‬

‫أ‪/‬رنده عبد ال‬ ‫تراكيب البيانات‬ ‫‪10/24/2023‬‬ ‫‪17‬‬


‫الترتيب االختياري ‪-‬مثال‬
‫رتبي عناصر السلسلة التالية مستخدمتا طريقة الفرز باالختيار‬ ‫‪‬‬

‫•‪1.1 2.2 1.2 2.5 6.4‬‬

‫الخطوة االولي ‪ :‬ايجاد اصغر قيمة في القائمة‪.‬‬ ‫‪‬‬

‫استبدال اصغر قيمة مع القيمة الموجودة في الموقع االول‬ ‫‪‬‬

‫اصغر قيمة‬

‫استبدال اصغر قيمة مع القيمة الموجودة في الموقع االول‬

‫أ‪/‬رنده عبد ال‬ ‫تراكيب البيانات‬ ‫‪10/24/2023‬‬ ‫‪18‬‬


‫• تكرار الخطوة االولي لبقية القائمة (نبدأ من الموقع الثاني والتقدم موقع في كل مرة )‬

‫•الخطوة الثانية ‪:‬‬

‫اصغر قيمة‬

‫بقية عناصر القائمة‬

‫استبدال اصغر قيمة مع ثاني قيمة في القائمة‬

‫أ‪/‬رنده عبد ال‬ ‫تراكيب البيانات‬ ‫‪10/24/2023‬‬ ‫‪19‬‬


‫الخطوة الثالثة‬

‫بقية عناصر القائمة‬

‫استبدال اصغر قيمة مع ثاني قيمة في القائمة‬

‫أ‪/‬رنده عبد ال‬ ‫تراكيب البيانات‬ ‫‪10/24/2023‬‬ ‫‪20‬‬


‫مثال ‪ :‬رتب القائمة‬
‫{‪}14 ,12 ,2 ,16 ,5- ,12 ,1 ,5‬‬
‫باستخدام ‪selection sort‬‬

‫أ‪/‬رنده عبد ال‬ ‫تراكيب البيانات‬ ‫‪10/24/2023‬‬ ‫‪21‬‬


:Pseudo code of the Selection Sort algorithm

Alg.: SELECTION-SORT(A)
n ← length[A]
for j ← 1 to n - 1
do smallest ← j
for i ← j + 1 to n
do if A[i] < A[smallest]
then smallest ← i
exchange A[j] ↔ A[smallest]

‫رنده عبد ال‬/‫أ‬ ‫تراكيب البيانات‬ 10/24/2023 22


‫انتهت المحاضرة بحمد هللا‬

‫أ‪/‬رنده عبد الرحمن‬ ‫تراكيب البيانات‬


‫محمد خالد‬

‫‪10/24/2023‬‬ ‫‪23‬‬

You might also like