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

Slides:



Advertisements
Similar presentations
Interval Heaps Complete binary tree. Each node (except possibly last one) has 2 elements. Last node has 1 or 2 elements. Let a and b be the elements in.
Advertisements

CS16: Data Structures & Algorithms | Spring 2014 Midterm Review 3/16/
Heapsort O(n lg n) worst case Another design paradigm –Use of a data structure (heap) to manage information during execution of algorithm Comparision-based.
Heapsort O(n lg n) worst case Another design paradigm –Use of a data structure (heap) to manage information during execution of algorithm Comparision-based.
Heapsort By: Steven Huang. What is a Heapsort? Heapsort is a comparison-based sorting algorithm to create a sorted array (or list) Part of the selection.
MergeSort (Example) - 1. MergeSort (Example) - 2.
COMP5712 Tutorial 4. 2 Using an Array to Represent a Heap When a binary tree is complete – Can use level-order traversal to store data in consecutive.
More sorting algorithms: Heap sort & Radix sort. Heap Data Structure and Heap Sort (Chapter 7.6)
Midterm Exam Two Tuesday, November 25 st In class cumulative.
3-Sorting-Intro-Heapsort1 Sorting Dan Barrish-Flood.
Sorting Lower Bound Andreas Klappenecker based on slides by Prof. Welch 1.
Sorting CS-212 Dick Steflik. Exchange Sorting Method : make n-1 passes across the data, on each pass compare adjacent items, swapping as necessary (n-1.
Merge Sort. What Is Sorting? To arrange a collection of items in some specified order. Numerical order Lexicographical order Input: sequence of numbers.
Lecture 2 Sorting. Sorting Problem Insertion Sort, Merge Sort e.g.,
Sorting Lower Bounds Amihood Amir Bar-Ilan University 2014.
Sorting 1. Insertion Sort
1Computer Sciences. 2 HEAP SORT TUTORIAL 4 Objective O(n lg n) worst case like merge sort. Sorts in place like insertion sort. A heap can be stored as.
Sorting  Selection Sort  Bubble Sort  Insertion Sort  Merge Sort (chap. 14)  Quick Sort (chap. 14)  Heap Sort (chap. 9)
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 26 Sorting.
Chapter 23 Sorting Jung Soo (Sue) Lim Cal State LA.
Chapter 24 Sorting.
Sorting.
Lecture 2 Sorting.
Heap Chapter 9 Objectives Define and implement heap structures
Data Structures Using C++ 2E
Heapsort CSE 373 Data Structures.
CPSC 411 Design and Analysis of Algorithms
Chapter 2 (16M) Sorting and Searching
Data Structures Using C++
Heapsort Chapter 6 Lee, Hsiu-Hui
Divide and Conquer.
Priority Queues Linked-list Insert Æ Æ head head
Review for Midterm Neil Tang 03/04/2010
CS302 Data Structures Fall 2012.
Sorting Data are arranged according to their values.
MergeSort Source: Gibbs & Tamassia.
Description Given a linear collection of items x1, x2, x3,….,xn
Sorting means The values stored in an array have keys of a type for which the relational operators are defined. (We also assume unique keys.) Sorting.
(2,4) Trees 11/15/2018 9:25 AM Sorting Lower Bound Sorting Lower Bound.
Analysis of Algorithms
Data Structures & Algorithms Priority Queues & HeapSort
Design and Analysis of Algorithms Heapsort
Ch 6: Heapsort Ming-Te Chi
كلية المجتمع الخرج البرمجة - المستوى الثاني
ITEC 2620M Introduction to Data Structures
Priority Queues.
(2,4) Trees 12/4/2018 1:20 PM Sorting Lower Bound Sorting Lower Bound.
Sorting Data are arranged according to their values.
Heapsort and d-Heap Neil Tang 02/11/2010
Computer Science 2 Heaps.
Sorting.
C++ Plus Data Structures
Heaps A heap is a binary tree that satisfies the following properties:
Heapsort CSE 373 Data Structures.
Dr.Surasak Mungsing CSE 221/ICT221 Analysis and Design of Algorithms Lecture 05-2: Analysis of time Complexity of Priority.
(2,4) Trees 2/28/2019 3:21 AM Sorting Lower Bound Sorting Lower Bound.
Data Structures Lecture 29 Sohail Aslam.
Topic 5: Heap data structure heap sort Priority queue
Sorting.
Sorting And Searching CSE116A,B 4/7/2019 B.Ramamurthy.
Heapsort Build the heap.
Heaps.
Searching/Sorting/Searching
Heaps By JJ Shepherd.
CS 583 Analysis of Algorithms
Chapter 12 Heap ADT © 2011 Pearson Addison-Wesley. All rights reserved.
Heapsort and d-Heap Neil Tang 02/14/2008
Algorithms CSCI 235, Spring 2019 Lecture 26 Midterm 2 Review
Sorting Popular algorithms:
Presentation transcript:

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

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

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

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

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

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

Algorithms of Insertion sort

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

نشوف العنصر اللى عليه الدور اللى هو 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

مثال :- عملية الترتيب حيث نقوم بترتيب خمسة عناصر:- 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