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

Download Report

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

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