Points to consider when
analysing an Algorithm:
- A sequence of statements which is executed only once is
O(1). It does not depends on how many
statements are in the sequence.
- If a problem of size n can be solved with a simple loop
for(i=0;i < n;i++)
{statements;}
where statements is an O(1) sequence of statements then the time complexity is n*O(1) or O(n) - If we have 2 nested loops,
for(j=0;j < n;j++)
for(i=0;i < n;i++)
{statements;}
then we have n repetitions of an O(n) sequence .so the complexity is n*O(n) which is O(n2) - suppose if the inner loop depends on the
outer loop index,
for(j=0;j < n;j++)
for(i=0;i < j;i++)
{statements;}
The inner loop gets executed j times. so the total is n*(n+1)/2 times.so the complexity is O(n2). The result is same as the result for 2 nested loops.so the variable number of iterations of the inner loop doesnt affect. - In a loop if a index jumps by an increasing amount in
each iteration, such as
n=1;
while(n < =x)
{
statements;
n=2*n;
}
in which n takes values 1,2,4,8..until it exceeds n.ie n=20,21,22,23.......This sequence has 1+Log2n values.so the complexity is O(log2n) - If the number of iterations of the loops decreases by a
constant factor with every iteration
h=n;
while(h > 0)
{
for(i=0;i < n;i++)
statements;
h=h/2;
}
then there are log2n iterations of the outer loop and n iterations of the inner loop. so the overall complexity is O(nlogn)
No comments:
Post a Comment