إذا العملية الأساسية في هذه الخوارزمية هي عملية المقارنة ويتم تكرارها (n-1) من المرات لأن حلقة التكرار يتم تنفيذها من (2) إلى (n). وبالتالي يمكن تعريف وقت التنفيذ للخوارزمية كدالة في حجم المدخلات على النحو التالي:
T(n) = n - 1
T(n) = n - 1
ملاحظة: هذه الخوارزمية تحتاج وحدة ذاكرة واحدة لتخزين المتغير (minval)، وبالتالي يمكن حساب كفاءة المساحة كدالة في حجم المدخلات على النحو التالي:
S(n)=1
S(n)=1
تحتوي الخوارزمية على ٤ عمليات:
* إسناد في السطر ١ تنفذ مرة ١
* مقارنة في السطر ٢ تنفذ في كل دورة من حلقة التكرار عند تحقق الشرط ومرة عندما لا يتحقق الشرط
* إسناد في السطر ٣ تنفذ في كل مرة يتحقق الشرط في حلقة التكرار
* قسمة في السطر ٤ تنفذ في كل مرة يتحقق الشرط في حلقة التكرار
* إسناد في السطر ١ تنفذ مرة ١
* مقارنة في السطر ٢ تنفذ في كل دورة من حلقة التكرار عند تحقق الشرط ومرة عندما لا يتحقق الشرط
* إسناد في السطر ٣ تنفذ في كل مرة يتحقق الشرط في حلقة التكرار
* قسمة في السطر ٤ تنفذ في كل مرة يتحقق الشرط في حلقة التكرار
العملية الأساسية في هذه الخوارزمية هي عملية المقارنة ويتم تكرارها (log(n)+1) لأن قيمة (n) تتناقص بمقدار النصف في كل مرة حتى تصبح قيمتها صفر إضافة إلى مرة أخيرة عندما لا يتحقق الشرط.
ولتوضيح ذلك نأخذ الرقم ١٥ كمثال، حيث تبدأ الخوارزمية بالعدد ١٥ ثم يتناقص بمقدار النصف في كل مرة (١٥، ٧، ٣، ١، ٠)، وعددها ٤ (log(15)+1=3+1=4) وبالتالي يمكن تعريف وقت التنفيذ للخوارزمية على النحو التالي:
T(n)=⌊log(n)⌋+1
T(n)=⌊log(n)⌋+1
وهنا يجب التنبيه على أننا اتفقنا على تمثيل وقت تنفيذ الخوارزمية كدالة في حجم المدخلات (أي حجم العدد المدخل)، وعلى الرغم من أن الحساب السابق صحيح إلا أنه لا يوضح كفاءة الخوارزمية لأنه تم قياسه باستخدام قيمة العدد المدخل وليس بحجم المدخلات.
وحيث أن حجم العدد المدخل يقاس بعدد البت (m) في التمثيل الثنائي لهذا العدد، والذي يمكن حسابه باستخدام دالة اللوغارتمات الثنائية ( [m=log2[n ). وبناء عليه يمكن إعادة كتابة تعريف وقت التنفيذ كدالة بحجم العدد المدخل على النحو التالي
T(m)=m+1
أي المعادلتين تمثل خوارزمية كفاءتها أفضل؟
T(m)=m+1
أي المعادلتين تمثل خوارزمية كفاءتها أفضل؟
جاري تحميل الاقتراحات...