260 likes | 726 Vues
قسم علوم الحاسوب و تكنولوجيا المعلومات تخصص دبلوم البرمجيات و قواعد البيانات. الوحدة الثالثـة خوارزميات الترتيب الأساسيـة. تراكيب البيانات. المادة العلمية إعداد أ. محمود رفيق الفـــرَّا http://mfarra.cst.ps. مدرس المساق/ أ . محمود رفيق الفـــرَّا. 2010-2011. محاور المحاضرة. تمهيد
E N D
قسم علوم الحاسوب و تكنولوجيا المعلومات تخصص دبلوم البرمجيات و قواعد البيانات الوحدة الثالثـة خوارزميات الترتيب الأساسيـة تراكيب البيانات المادة العلمية إعداد أ. محمود رفيق الفـــرَّا http://mfarra.cst.ps مدرس المساق/ أ. محمود رفيق الفـــرَّا 2010-2011
محاور المحاضرة • تمهيد • خوارزمية الفقاعات الهوائية (Bubble Sort) • خوارزمية الاختيار للترتيب (Selection Sort) • خوارزمية الإدراج للترتيب (Insertion Sort) مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
بذكرك ربنـا نحيــا • الذكر لمن أراد أن يقيه الله من الضرر بسم الله الذي لا يضرُ مع اسمه شيء في الأرض ولا في السماء و هو السميع العليم عن إبان بن عثمان بن عفان رضي الله عنه أن رسول الله صلى الله عليه وسلم قال: من قال حين يصبح أو يمسي (بسم الله الذي لا يضرُ مع اسمه شيء في الأرض ولا في السماء و هو السميع العليم) ثلاث مرات لم يضره شيء. صحيح مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
تمهيد • من أبرز و أهم العمليات التي يتم تنفيذها على البيانات المخزنة داخل تراكيب البيانات ما يعرف ترتيب العناصر و البحث عن العناصر. • و ذلك لما لها من أثر إيجابي بالغ في العمل الاقتصادي. • و قد تم تطوير العديد من تراكيب البيانات لجعل تنفيذ هذه العمليات أكثر سهولة و سرعة. • و يعتبر استحداث الخوارزميات من الجهود
ما الهدف من خوارزميات الترتيب؟ • تهدف خوارزميات الترتيب إلى العمل على ترتيب مجموعة من العناصر المخزنة ضمن أحد أشكال تراكيب البيانات, و الترتيب يتم بناءً على كيفية محددة فمثلا تصاعدي, تنازلي, أبجدي, ... • و تتميز خوارزمية عن أخرى من خوارزميات الترتيب في مدى تعقيد الخوارزمية من حيث الوقت و المساحة التخزينية المطلوبة.
خوارزمية Bubble Sort • تعتمد هذه الخوارزمية على مقارنة العناصر المتجاورة, مع بناءً على هذه المقارنة يتم عمل الترتيب سواء تصاعدي أو تنازلي. • و هذا النوع من الخوارزميات نحتاج فيه إلى المرور على البيانات المخزنة بعدد مرات يساوي عدد العناصر المخزنة مطروحا منه واحد (n-1), و ذلك في أسوء الأحوال (ما المقصود بـ أسوء الأحوال؟) • درجة تعقيد هذه الخوارزمية (Complexity) = О(n2) حيث أنَّ n هي عدد العناصر المراد ترتيبها. مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزميةBubble Sort مصدر الصورة http://vsmecollege.blogspot.com/2010/05/bubble-sort-bash-shell-programming-with.html مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزمية Bubble Sort • for ( int pass = 1, pass < عدد العناصر, pass++ ) • for ( int i = 0; i < عدد العناصر- 1; i++ ) • if ( b[ i ] > b[ i + 1 ] ) • Swap(b[ i ], b[ i +1] ); • التكرار في السطر الأول نستخدمه لتكرار المرور على العناصر المراد ترتيبها. • التكرار في السطر الثاني يستخدم لتكرار فحص كل عنصرين متجاورين, و هذا يتم في كل دوران. مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزمية Bubble Sort على المصفوفة static void Main(string[] args) { int[] id = { 12, 30, 1, 4, 7, 2 }; Console.Write(" Elements of Array Before Sorting "); for (int x = 0; x < id.Length; x++) Console.Write(" " + id[x]); Console.WriteLine(" "); for (int i =0; i< id.Length; i++) for (int j =0; j< id.Length-1; j++) if (id[j] > id[j + 1]) { int hold = id[j]; id[j] = id[j + 1]; id[j + 1] = hold; } Console.Write(" Elements of Array After Sorting "); for (int x = 0; x < id.Length; x++) Console.Write(" "+id[x]); } ترتيب المصفوفة تصاعديـا في حال رغبنا في تنازليا سنقوم بعكس شرط الفحص في السطر رقم 10 ليصبح if (id[j] < id[j + 1]) مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزمية Selection Sort • تعتمد هذه الخوارزمية على البحث عن أصغر عنصر تالي, يتم وضعه في ترتيبه المناسب. • ففي كل دورة من دورات التكرار يتم البحث عن أصغر عنصر فيما تبقى من المصفوفة, و عند العثور عليه يتم عمل استبدال swap بينه و بين العنصر الموجود في الموضع صاحب رقم الدورة و هكذا حتى نحصل على عناصر مرتبة. • درجة تعقيد هذه الخوارزمية (Complexity) = О(n2) حيث أنَّ n هي عدد العناصر المراد ترتيبها. مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزمية Selection Sort مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزمية Selection Sort static void Main(string[] args) { int[] a = { 10, 2, 34, 4, 3, 1, 100 }; int hold; for (int i = 0; i < a.Length; i++) { for (int j = i + 1; j < a.Length; j++) if (a[j] < a[i]) { hold = a[j]; a[j] = a[i]; a[i] = hold; } } for (int k = 0; k < a.Length; k++) Console.WriteLine(a[k]); Console.Read(); } مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزمية Insertion Sort • خوارزمية الإدراج, هي الطريقة النمطية التي يستخدمها الناس لترتيب أشياءهم, فهي تعتمد على جمع العناصر المراد ترتيبها, ثم نبدأ في أخذ العناصر واحدا تلو الآخر و نضعه في ترتيبه المناسب, و هكذا حتى نصل إلى الترتيب النهائي. • ملاحظـة/ العنصر الأول لا يتم تغيير موضعه إلا بعد الدورة الأولى على الأقل, بينما في البداية فهو يعتبر الوحيد و بالتالي موضعه مناسب, و يتم تحريكه فقط إن ظهر عنصر فيما بعد أصغر منه. • درجة تعقيد هذه الخوارزمية (Complexity) = О(n2) حيث أنَّ n هي عدد العناصر المراد ترتيبها. مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزمية Insertion Sort مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزمية Insertion Sort المصدر: وكيبيديا مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
خوارزمية Insertion Sort مع المصفوفة static void Main(string[] args) { int[] a = { 10, 2, 34, 4, 3, 1, 100 }; int inner, temp; for (int outer = 1; outer < a.Length; outer++) { temp = a[outer]; inner = outer; while (inner > 0 && a[inner - 1] >= temp) { a[inner] = a[inner - 1]; inner = inner -1; } a[inner] = temp; } Console.WriteLine(); for (int k = 0; k < a.Length; k++) Console.WriteLine(" " + a[k]); Console.Read(); } مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
مقارنة درجة التعقيد للخوارزميات الثلاث • Bubble: • #Compares: O(n2) • #Swaps: O(n2) • Selection: • #Compares: O(n2) • #Swaps: O(n) • Insertion • #Compares: O(n2) • #Shifts: O(n2) مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا
أشكركم السؤال مفتاح للعلوم كلها... تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إلى قوانين الجاذبيــة ... مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا