Вы можете переписать исходный код
int n = 20;
int i = 0;
while (i < n)
{
i++;
int j = i;
while (i < n)
{
printf("this is %d",i);
i++;
}
i = j;
}
в эквивалент :
int n = 20;
for (int i = 1; i < n; ++i)
for (int j = i; j < n; ++j)
printf("this is %d", j);
Теперь очевидно, что у вас есть O(n**2)
сложность времени: у вас есть
(n - 1) + (n - 2) + (n - 3) + ... + 3 + 2 + 1 = n * (n - 1) / 2
операций (printf(...)
) и
O(n * (n - 1) / 2) = O(n**2 / 2 - n / 2) = O(n**2)