# Time complexity

Time complexity is the computational complexity that describes the amount of computer time it takes to run an algorithm.

`int i=0;`
`for (int i = 0; i < n; ++i) {    System.out.println(i);}`
1. Average case time complexity:- The average number of time algorithm is taking to complete the program.
2. Best case time complexity:- The fastest number of times an algorithm takes to complete.

# Space complexity

Space complexity is the amount of memory taken by our program to solve a particular task. A good programmer always focus on reducing space complexity.

`public static int fibonacci(n) {    int x = 0, y = 1, z;    if (n === 0) {        return x;    }    if (n === 1) {        return y;    }    for (int i = 2; i <= n; ++i) {        z = x + y;        x = y;        y = z;    }    return z;}`
`List<Integer> list=new ArrayList<>();for (int i = 0; i < n; ++i) {    list.add(i);}`
1. O(n): if we simply iterate in one loop.
2. O(log n): if we divide whole array into 2 parts and do search operation then our number of search will become less then this complexity occurs.
3. O(1): if we traverse directly through index then this complexity occurs.

# Conclusion

Similar to time complexity space complexity also plays a major role. We can wait for program to complete it’s execution but we can’t increase memory at run time so space complexity is more important.