int count=0;
do
{
count++;
n=n/2;
}while (n>1);
I'm having trouble seeing the pattern here.
Even when plugging in numbers for n and then plotting out each basic operation.
Thanks in advance!
Edit: I want the worst case here.
int count=0;
do
{
count++;
n=n/2;
}while (n>1);
I'm having trouble seeing the pattern here.
Even when plugging in numbers for n and then plotting out each basic operation.
Thanks in advance!
Edit: I want the worst case here.
First step is to divide n with 2. So you get n/2. Now, you divide it again with 2, if n/2 > 1, and you get n/4. If n/4 > 1 you do it again, and you get n/8, or better to write it as n/(2^3)... Now if n/(2^3) > 1 you do it again, and you get n/(2^4)... So, if you do it k times, you get n/(2^k). How to calculate k to so you get n/(2^k) ≤ 1? Easy:
n/(2^k) ≤ 1
n ≤ 2^k
ln(n) ≤ k
So, your algorithm needs O(ln(n)) iterations to exit the loop.
In your code, k is count.