1 / 18

تراكيب البيانات

قسم علوم الحاسوب و تكنولوجيا المعلومات تخصص دبلوم البرمجيات و قواعد البيانات. الوحدة الثالثـة خوارزميات الترتيب الأساسيـة. تراكيب البيانات. المادة العلمية إعداد أ. محمود رفيق الفـــرَّا http://mfarra.cst.ps. مدرس المساق/ أ . محمود رفيق الفـــرَّا. 2010-2011. محاور المحاضرة. تمهيد

ingo
Télécharger la présentation

تراكيب البيانات

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. قسم علوم الحاسوب و تكنولوجيا المعلومات تخصص دبلوم البرمجيات و قواعد البيانات الوحدة الثالثـة خوارزميات الترتيب الأساسيـة تراكيب البيانات المادة العلمية إعداد أ. محمود رفيق الفـــرَّا http://mfarra.cst.ps مدرس المساق/ أ. محمود رفيق الفـــرَّا 2010-2011

  2. محاور المحاضرة • تمهيد • خوارزمية الفقاعات الهوائية (Bubble Sort) • خوارزمية الاختيار للترتيب (Selection Sort) • خوارزمية الإدراج للترتيب (Insertion Sort) مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  3. بذكرك ربنـا نحيــا • الذكر لمن أراد أن يقيه الله من الضرر بسم الله الذي لا يضرُ مع اسمه شيء في الأرض ولا في السماء و هو السميع العليم عن إبان بن عثمان بن عفان رضي الله عنه أن رسول الله صلى الله عليه وسلم قال: من قال حين يصبح أو يمسي (بسم الله الذي لا يضرُ مع اسمه شيء في الأرض ولا في السماء و هو السميع العليم) ثلاث مرات لم يضره شيء. صحيح مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  4. تمهيد • من أبرز و أهم العمليات التي يتم تنفيذها على البيانات المخزنة داخل تراكيب البيانات ما يعرف ترتيب العناصر و البحث عن العناصر. • و ذلك لما لها من أثر إيجابي بالغ في العمل الاقتصادي. • و قد تم تطوير العديد من تراكيب البيانات لجعل تنفيذ هذه العمليات أكثر سهولة و سرعة. • و يعتبر استحداث الخوارزميات من الجهود

  5. ما الهدف من خوارزميات الترتيب؟ • تهدف خوارزميات الترتيب إلى العمل على ترتيب مجموعة من العناصر المخزنة ضمن أحد أشكال تراكيب البيانات, و الترتيب يتم بناءً على كيفية محددة فمثلا تصاعدي, تنازلي, أبجدي, ... • و تتميز خوارزمية عن أخرى من خوارزميات الترتيب في مدى تعقيد الخوارزمية من حيث الوقت و المساحة التخزينية المطلوبة.

  6. خوارزمية Bubble Sort • تعتمد هذه الخوارزمية على مقارنة العناصر المتجاورة, مع بناءً على هذه المقارنة يتم عمل الترتيب سواء تصاعدي أو تنازلي. • و هذا النوع من الخوارزميات نحتاج فيه إلى المرور على البيانات المخزنة بعدد مرات يساوي عدد العناصر المخزنة مطروحا منه واحد (n-1), و ذلك في أسوء الأحوال (ما المقصود بـ أسوء الأحوال؟) • درجة تعقيد هذه الخوارزمية (Complexity) = О(n2) حيث أنَّ n هي عدد العناصر المراد ترتيبها. مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  7. خوارزميةBubble Sort مصدر الصورة http://vsmecollege.blogspot.com/2010/05/bubble-sort-bash-shell-programming-with.html مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  8. خوارزمية 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] ); • التكرار في السطر الأول نستخدمه لتكرار المرور على العناصر المراد ترتيبها. • التكرار في السطر الثاني يستخدم لتكرار فحص كل عنصرين متجاورين, و هذا يتم في كل دوران. مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  9. خوارزمية 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]) مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  10. خوارزمية Selection Sort • تعتمد هذه الخوارزمية على البحث عن أصغر عنصر تالي, يتم وضعه في ترتيبه المناسب. • ففي كل دورة من دورات التكرار يتم البحث عن أصغر عنصر فيما تبقى من المصفوفة, و عند العثور عليه يتم عمل استبدال swap بينه و بين العنصر الموجود في الموضع صاحب رقم الدورة و هكذا حتى نحصل على عناصر مرتبة. • درجة تعقيد هذه الخوارزمية (Complexity) = О(n2) حيث أنَّ n هي عدد العناصر المراد ترتيبها. مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  11. خوارزمية Selection Sort مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  12. خوارزمية 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(); } مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  13. خوارزمية Insertion Sort • خوارزمية الإدراج, هي الطريقة النمطية التي يستخدمها الناس لترتيب أشياءهم, فهي تعتمد على جمع العناصر المراد ترتيبها, ثم نبدأ في أخذ العناصر واحدا تلو الآخر و نضعه في ترتيبه المناسب, و هكذا حتى نصل إلى الترتيب النهائي. • ملاحظـة/ العنصر الأول لا يتم تغيير موضعه إلا بعد الدورة الأولى على الأقل, بينما في البداية فهو يعتبر الوحيد و بالتالي موضعه مناسب, و يتم تحريكه فقط إن ظهر عنصر فيما بعد أصغر منه. • درجة تعقيد هذه الخوارزمية (Complexity) = О(n2) حيث أنَّ n هي عدد العناصر المراد ترتيبها. مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  14. خوارزمية Insertion Sort مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  15. خوارزمية Insertion Sort المصدر: وكيبيديا مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  16. خوارزمية 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(); } مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  17. مقارنة درجة التعقيد للخوارزميات الثلاث • Bubble: • #Compares: O(n2) • #Swaps: O(n2) • Selection: • #Compares: O(n2) • #Swaps: O(n) • Insertion • #Compares: O(n2) • #Shifts: O(n2) مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

  18. أشكركم السؤال مفتاح للعلوم كلها... تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إلى قوانين الجاذبيــة ... مساق تراكيب البيانات المادة العلمية إعداد/ أ. محمود رفيق الفــرَّا

More Related