Explanation of graph and values

The benchmarks and their graphical representation correspond well to the expected results. Without doing any deep analysis of the data it is clear from the graph that - with the exception of the first part of the Algo-1 results - represent instances of the corresponding O(.) functions.

The oddities in the Algo-3 graph can be explained by the fact that when a method has not been run before, it has not been Just-In-Time compiled and thus it takes a few runs before it performs with optimal speed. For the subsequent benchmarks the method seems to have been JIT compiled and thus performs better than for n = 50.

When n is doubled, the time develops as follows: \[\begin{aligned} Algo1, O(n^3): (2n)^3 & = 8n^3, \\ Algo2, O(n^2): (2n)^2 & = 4n^2, \\ Algo3, O(n^1): (2n)^1 & = 2n\end{aligned}\]

For each time the size of the problem doubles, it takes \(8 = 2^3\) times longer for Algo1 to finish.
For Algo2, it takes \(4 = 2^2\) times longer, and \(2 = 2^1\) times longer for Algo1.