تراكيب البيانات
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
السؤال مفتاح للالوم كلها...
تذكر أن نيوتن عندما سأ لماذا وقعت التفاحـة وص إلع قوانين الجاذبيــة ...
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا