Presentation is loading. Please wait.

Presentation is loading. Please wait.

بسم الله الرحمن الرحيم شرح جميع طرق الترتيب باللغة العربية

Similar presentations


Presentation on theme: "بسم الله الرحمن الرحيم شرح جميع طرق الترتيب باللغة العربية"— Presentation transcript:

1 بسم الله الرحمن الرحيم شرح جميع طرق الترتيب باللغة العربية
بسم الله الرحمن الرحيم شرح جميع طرق الترتيب باللغة العربية الأسم:-عبدالرحمن حسين هاشم الحامس سكشن:- ((4)) قســـم:-علوم حاسب تحت إشراف: د. محمد الدسوقي

2 Algorithms Insertion Sort
يعني هو الفكرة فى انه لو عنده مصفوفة مترتبة و ويريد يدخل فيها عنصر .. يفضل يقارنه بعناصر المصفوفة لغاية ما يلاقي اول عنصر اكبر منه يقوم محطوط قبله .

3 هناخد مثال و نمشي عليه عندما يكون عندنا مجموعة من العناصر غيرمرتبة هكذا....
فعندما نبدأ بالترتيب..نبدأ بالعنصر الثانى اى -5 وسنقوم بمقارنة هذا العنصر بالعنصر الذى يسبقه اى 7

4 اذا كان العنصر الثانى اقل من العنصر الذى يسبقه نقوم بتبديل الاماكن سنضع العنصر -5 مكان العنصر 7 و العكس هكذا:::

5 بعد انتهاء هذه المرحلة نجد اننا كنا وضعنا هذا العنصر فى مكانه الصحيح بالنسبة للعنصر الذى يسبقه(ولكن موضعه هذا ليس نهائيا) اى من الممكن ان نجد رقم اقل من -5 و هنا سيحل هذا الرقم محل العنصر ثم ننتقل الى العنصر الثالث و نقارنه بالعنصر الذى يسبقه و اذا تحقق الشرط (ان يكون العنصر اقل من العنصر الذى يسبقه)ننقله و هكذا كمــــــــــــــــــــــــــــــــــــــــا يلي :-

6

7 فهذا يعني أننا وصلنا إلى نهاية المصفوفة التي حجمها هو 5......
فالمصفوفه أصبحت مرتبة ترتيباً تصاعدياً Ascending order أي من الأصغر إلى الأكبر وهذه هي فكرة هذه الخوارزمية وهي أوإدخال العنصر في مكانه الصحيح ففي كل دوره loop نقوم بإدخال عنصر واحد في مكانه الصحيح ...

8 Algorithms of Insertion sort

9 فى Algorithm هذا هو بيعمل loop بتمشي على المصفوفة كلها من الاول للاخر و بيخزن العنصر اللى الثانى فى اول مرة فى الkey و يبدا loop جديدة ماسكة من العنصر اللى قبل الkey لغاية الاول و فى كل مرة بتساوي كل عنصر باللى قبله لغاية ما تلاقي عنصر اصغر من الkey تقوم حاطاه فيه الكلام يفهم بمثال لو عندنا 2,10,5,3 مثلا هنيجي فى اول loop ونخلى الkey = 10 و الi = 1 اللى هوالاندكس اول عنصر ندخل فى الloop التانية طالما الi اكبر من الصفر يعني المصفوفة ما خلصت و طالما العنصر اللى عليه الدور اكبر من الkey نكمل

10 نشوف العنصر اللى عليه الدور اللى هو 2 مش اكبر من ال10 هيقوم خارج و يحط ال10 مكانها لان هو المكان الصح طيب فى ثانى مرة نمسك ال5 و نقارنها باللى قبلها key = 5, i=2 فندخل فى اللوب الثانية و نشوف هل ال5 اصغر من ال10؟ يبقى هناخد ال10 و نحطها مكان ال5 (نزيحها بمقدار خانة) و نقلل الi بمقدار 1 و يبقى المصفوفة شكلها :- , 10, 10, 3 ثم نقارن الkey اللى هو 5 بال2 هنلاقيه اكبر منها فهنخرج برة اللوب الصغيرة و نحط ال5 فى المكان اللى احنا واقفين فيه و تبقى المصفوفة :- 2, 5, 10, 3

11 لما نعمل نفس الكلام مع التلاتة هنلاقي المصفوفة هتبقى كده 2, 5, 10, 10 2, 5, 5, 10 2, 3, 5, 10 وهذا الذي عملناه اسمه tracing للا Algorithms

12 Algorithms MergeSort فكرة عمل Algorithms
عندما يكون لدينا قائمة list بها بعض العناصر و نريد ترتيب هذا العناصر عن طريق ال merge sort اولا نقوم بتقسيم ال list التى لدينا الى نصفين متساويين اذا كان عدد العناصر زوجى اما اذا كان عدد العناصر فردى نقوم بتقسيمها الى جزئين بحيث ان يكون الجزء على الطرف اليمين يزيد عن الجزء على الطرف الايسر بمقدار واحد يعنى لو كان عدد العناصر سبعة نقسمها الى 4 و 3

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

14

15 لو اخدنا الحالة اللى فيها المصفوفة 27, 38 و المصفوفة 3, 43 و ونريد نخليهم مصفوفة واحدة مرتبة ... ابسط حاجة اننا ناخد اول عنصر فى المصفوفة a و اول عنصر فى المصفوفة b و نشوف من الاقل هنلاقي ال3 اقل من ال27 يبقى ال3 اول عنصر بعد كذا نكرر العملية و نشوف ثانى عنصر فى الb مع اول عنصر فى الa لانه لسه ما هو فى مكانه يبقى ما انتقلنا من عليه ايضا هنلاقي ان ال27 اقل من 43 يبقى تانى عنصر فى المصفوفة الجديدة 27 و يبقى المصفوفة نتحرك فيها بمقدار 1 و بعد كذا نشوف العنصر الثانى مع الثانى هنلاقي ان ال38 اقل من 43 فهنحطها و تكون هى العنصر الثالت فى المصفوفة الجديدة و بكذا تبقى المصفوفة a خلصت يبقى نحط العنصر اللى فاضل فى المصفوفة b و تبقى المصفوفة الجديدة 3, 27, 38, 43

16 المثال السابق توضيح للtracing للMergeSort الخوازم
merge(A,p,q,r) combin

17 الفكرة كما سبق ؟ اننا نبعت للميثود فى الاول المصفوفة و اول اندكس اللى هو 0 و اخر اندكس اللى هو طول المصفوفة – 1 بعد كذا هو بيشوف شرط الاستمرار ان الp<r لان لو الr<=p معنى كذاه انه رتب المصفوفة كلها اول خطوة بيقوم قاسم المصفوفة جزئين اول جزء من ال0 لغاية الq و الq هذا اللى هو العنصر اللى فى النص و ثانى جزء من اول الq+1 للاخر و يعمل لكل واحد فيهم MergeSort ثانى و بعد ما يخلصوا الخطوتين بيعملوا Merge عشان يدمج المصفوفتين مع بعض

18 لما نوصل ان الr اللى هو اندكس النهاية اقل من او يساوي الp اللى هو اندكس البداية معناه اننا وصلنا ان المصفوفة بقى فيها عنصر واحد بس نقوم مرجعين العنصر مع العنصر الثانى اللى كان معاه و نعملهم Merge مع بعض عشان يترتبوا و هكــــــــــــــــــــــذا . و لما تقارن خطوات الالجوريزم مع الرسمة الtrace ستكون واضحه ان شاء الله

19 AlgorithmsQuick Sort مثال
الQuick Sort هو واحد من اسرع الخوريزمات الsort و هو بيعتمد بشكل اساسي على الجوريزم partition و فكرته انه بياخد اخر عنصر فى المصفوفة و بيشوف مكانه فين فى المصفوفة (مكانه الصحيح) و يحطه فى مكانه و بعدين ياخد اللى قبله يعملهم مصفوفة جديدة و اللى بعده يعملهم مصفوفة جديدة و يعمل عليهم نفس الكلام ثانى فى الاخر المفروض هناخد المصفوفة مرتبة . مثال

20 خمسة طلاب درجاتهم على التوالي 80 ثم 40 ثم 90 ثم 55 ثم 30 ومحور التقسيم 50 0
اللون الأحمر هو الذي يتحرك من اليسار الى اليمين مع كل مرة يجد قيمة أصغر واللون الأخضر يتحرك من اليمين الى اليسار كلما وجد قيمة أكبر وسوف ابدا باختبار القيم من اليمين الى اليسار ... 80 55 90 40 30

21 لقيمة 80 أكبر من 50 فلذلك نقلناها الى أقصى اليمين و العنصر في أقصى اليمين أخذ مكانها وحركنا المؤشر الأخضر للعنصر التالي 80 55 90 40 30 القيمة 30 أصغر من 50 فذلك لا حاجة لعملية استبدال أماكن فقط نقوم  بتحريك المؤشر الأحمر خطوة إلى اليمين وهو مايعني أننا سوف نختبر القيمة 40 في الخطوة التالية … 80 55 90 40 30

22 40 أصغر من 50 فلذلك نقوم بتحريك اللون الأحمر خطوة إلى اليمين لأحظ أنه لا يمكن الاستمرار لأن اللونين الأخضر والأحمر التقيا مما يعني ان عملية التقسيم انتهت فلو افترضنا أن القيمة عند اللون الأحمر أصغر فإن هذا لن يؤثر على التقسيم في حال الاستمرار وان كانت أكبر فأيضا ذلك لن يؤثر على التقسيم في حال الاستمرار فكلما عالجنا الأمور بخطوات اقل كان ذلك... … لاحظ أن القيم أصغر من 50 تكون في اليسار والقيم الأكبر في اليمين . نفس المثال السابق: سوف نبدأ الإختبار من القيمة 80 وهي الثانية من اليسار والقيمة 50 هي محور التقسيم وموقعه أول القائمة  من اليسار.

23 القيمة 50 تقع بين الأكبر من والأصغر من ويفيدنا هذا التقسيم في تقليص عدد الخطوات بحيث لا حاجة لأن ندخل المحور في عملية التقسيم مرة أخرى ....كما يلي :- 55 90 40 80 50 30

24 Algorithms Heap Sort الheap sort هو احدى الجوريزمات ترتيب المصفوفات اللى بيعتمد على استخدام الbinary trees و هى tree كل نقطة طالع تحتها على الاكثر عنصرين فكرة عمل الHeapsort تتوضح في المثال الاتي هذه عباره عن مصفوفه غير مرتبه :- نقوم بوضعها ع شكل شجره بوضع اول عنصر في القمه ثم يتفرع منه العنصرين الذي بعده وهاكذا .....

25 ملاحظه Algorithmsهذا بيعتمد بشكل اساسي على خاصية اسمها max heap property و هى ان كل parent node بتكون اكبر من الchildren اللى تحتها فى القيمة نرجع للمثال نلاحظ ان 10 اقل من 16 فنبادل بينهم ...كما يلي ...

26 هنا الرقم 19 اكبر من 15 فنعمل بينهم swape كالاتي :-

27 نلاحظ الشيلد في array 2 اكبر من 15 فنعمل بينهم swape كالاتي:-

28 فيكون الشكل النهائي لها:-
فيكون الشكل النهائي لها:-

29 AlgorithmsCount Sort الCount Sort بيعتمد فى اسلوبه على عد الارقام المكررة فى المصفوفة قبل ما نبدا لازم نعرف المكونات بتاع Algorithms عندنا ثلات مصفوفات A[1 ….. n] هذه الاصلية و B[1 ….. n] اللى هيكون فيها العناصر مرتبة و C[0 ….. k] مصفوفة مؤقتة بنعد فيها عدد العناصر K عبارة عن اكبر قيمة فى المصفوفة A

30 مثال:- اول لووب بتمشي على المصفوفة A لنفرض مثلا الخانة اللى واقفين عليها هى رقم 5 و فيها العنصر 1 مثلا هيقوم جاى على الخانة رقم 1 فى المصفوفة C و يزودها بواحد (بمعنى ان عدد ال1 فى المصفوفة زاد ب1)

31 ثاني لووب بتيجي على كل خانة فى المصفوفة C و تحط فيها مجموع قيم الخانات اللى قبلها كلها
ثالث لووب بتمشي على المصفوفة A من الاخر للاول هتجيب مثلا قيمة اخر عنصر فى A و لتكن 2 هتقوم رايح على الخانة رقم 2 فى C و تجيب القيمة اللى فيها و لتكن 5 هتقوم رايح على الخانة رقم 5 فى الB و تحط فيها ال5

32 بعد كده هتنقص ال5 دى بمقدار 1

33 وهاكذا لغاية ما المصفوفه تترتب ...
وهاكذا لغاية ما المصفوفه تترتب ...

34 Bubble Sort Algorithm هدف هذه الخوارزمية هو ترتيب عناصر مصفوفة اما ترتيب تصاعدى او تنازلى. وهي من ابسط الخوارزميات و هى من خوارزميات المقارنة. فلو رتبنا مصفوفه تصاعديا :- 1- نمر على عناصر المصفوفة جميعا 2- عندما نجد عنصر اصغر من العنصر الذى يسبقه(قبله) نقوم بتبديلهما. 3- نمر هكذا على جميع عناصر المصفوفة حتى ننهى الدورة الاولى. 4- نعيد المرور على عناصر المصفوفة مرة اخرى و نرى ان كان هناك احد العناصر اصغر مما يسبقه و نبدلهما حتى ننهى هذه الدورة. 5- نعيدها مرارا و تكرارا حتى ننتهى تماما من ترتيبها.

35 مثال نقارن بين عناصر المصفوفه نجد ان 67 اكبر من 12
نقارن بين عناصر المصفوفه نجد ان 67 اكبر من 12 فنعمل بينهم سواب وهاكذا ...

36

37 Sorted array:

38 selection sort algorithm
إوجد العنصر الأقل قيمة في القائمة بدل هذا العنصر مع العنصر الأول في القائمة كرر الخطوتان السابقات ولكن هذه المرة إبدأ من العنصر التالي صوره توضيحيه متحركه ... ection-Sort-Animation.gif

39 مثال :- عملية الترتيب حيث نقوم بترتيب خمسة عناصر:- 64 25 12 22 11 11 64 25 12 22 11 12 64 25 22 11 12 22 64 25 11 12 22 25 64

40


Download ppt "بسم الله الرحمن الرحيم شرح جميع طرق الترتيب باللغة العربية"

Similar presentations


Ads by Google