1 / 40

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

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

  7. Algorithms of Insertion sort

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  34. 45 67 12 34 25 3945 12 34 25 39 67 12 34 25 39 45 12 25 34 39 12 25 34Sorted array:12 25 34 39 45 67

  35. selection sort algorithm • فكرة عمل هذاalgorithm • إوجد العنصر الأقل قيمة في القائمة • بدل هذا العنصر مع العنصر الأول في القائمة • كرر الخطوتان السابقات ولكن هذه المرة إبدأ من العنصر التالي صوره توضيحيه متحركه ... http://upload.wikimedia.org/wikipedia/commons/9/94/Selection-Sort-Animation.gif

  36. مثال :- • عملية الترتيب حيث نقوم بترتيب خمسة عناصر:-

More Related