السلام عليكم اخوان ..
اغلبكم يعرف ماهي خوارزمية التريب الفقاعي ..
وللذي لا يعرف ماهي خوارزمية الترتيب الفقاعي .. هي خوارزمية تستعمل لترتيب عناصر اما بشكل تصاعدي او تنازلي ..
وغالبا ما تستعمل مع المصفوفات لغرض ترتيب عناصرها تصاعديا او تنازليا...
الخوارزمية توضح بالكود التالي ..
So you would fill Grades(5) with the values. Then you would say - for ctr = 1 to 4 .for ctr2 = ctr + 1 to 5 ..if Grades(ctr) < Grades(ctr2) then ...Temp = Grades(ctr) ...Grades(ctr) = Grades(ctr2) ...Grades(ctr2) = Temp ..end if .next next
ولتمثيلها بلغة السي ++ .. نستخدم الكود التالي ..
for(int x=0; x<n; x++)
{
for(int y=0; y<n-1; y++)
{
if(array[y]>array[y+1])
{
int temp = array[y+1];
array[y+1] = array[y];
array[y] = temp;
}
}
}عن طريق الكود يمكن تحديد TIME COMPLEXITY الخاص بهذه الخوارزمية وهو سيكون O(N^2) اي انها تربيعيه ..
ويمكن اثبات ذلك بشيئين .. الاول .. ان الكود يحتوي على loop في داخل loop اخرى وهذا يجعل n الداخليه تضرب مع n الخارجيه لتصبح n^2
الاثبات الثاني ..
قانون زمن هذه الداله هو 1.5N^2 - 0.5N .. ومنه O(N^2) ..
هذا ما اكتشفته في يدي .. وما تأكدت منه بعد ذلك من مواقع الانترنيت ..
ولكن وجدت شخص (لا اريد ان اذكر ماهو بالنسبه الي) يقول بان زمن هذه الخوارزمية من نوع N log N .. والسبب في ذلك هو ان الدوارة الداخليه والخارجيه تكون في بعض الاحيان على اختلاف فتقل واحد وتزداد الاخرى فتحقق شرط الزمن اللوغارتمي وليس التربيعي ..
فجعلني اشك في معلوماتي ..
فلذلك ها انا اضع المعلومات بين ايديكم .. واضع المشكله .. واضع حلي ايضا لكم .. فما هو الزمن الصحيح للخوارزمية وكيف استنتجتم ذلك .؟؟
تحياتي العطرة وانتظر اجابتكم على السؤال ..



