logo

التعقيد الزمني للحلقة عندما يكون متغير الحلقة "يتوسع أو ينكمش" بشكل كبير

في مثل هذه الحالات، يكون التعقيد الزمني للحلقة هو O(log(log(n))). تحلل الحالات التالية جوانب مختلفة من المشكلة. الحالة 1 : CPP
for (int i = 2; i <=n; i = pow(i k))  {   // some O(1) expressions or statements } 
In this case i takes values 2 2ك(2ك)ك= 2ك2(2ك2)ك= 2ك3... 2كسجلك(سجل (ن)). يجب أن يكون الحد الأخير أقل من أو يساوي n ولدينا 2كسجلك(سجل (ن))= 2سجل (ن)= n والتي تتفق تمامًا مع قيمة الحد الأخير. لذلك هناك في السجل الإجماليك(log(n)) العديد من التكرارات وكل تكرار يستغرق وقتًا ثابتًا للتشغيل وبالتالي فإن إجمالي تعقيد الوقت هو O(log(log(n))). الحالة 2 : CPP
// func() is any constant root function for (int i = n; i > 1; i = func(i))  {   // some O(1) expressions or statements } 
In this case i takes values n n1/ك1/ك)1/ك= ن1/ك2ن1/ك3... ن1/كسجلك(سجل (ن))لذلك هناك في السجل الإجماليك(log(n)) التكرارات وكل تكرار يستغرق وقتًا O(1) لذا فإن إجمالي تعقيد الوقت هو O(log(log(n))). راجع المقالة أدناه لتحليل أنواع مختلفة من الحلقات. https://www.geeksforgeeks.org/dsa/how-to-analyse-loops-for-complexity-analogy-of-algorithms/ إنشاء اختبار