title: Why do we prefer not to specify the constant factor in Big-O notation?
body: <p>Let's consider classic big O notation definition (<a href="http://www.phil.uu.nl/datastructuren/10-11/knuth_big_omicron.pdf" rel="nofollow noreferrer">proof link</a>):</p>
  
  <blockquote>
    <p><code>O(f(n))</code> is the set of all functions such that there exist positive constants <code>C</code> and <code>n0</code> with  <code>|g(n)| ≤ C * f(n)</code>, for all <code>n ≥ n_0</code>.</p>
  </blockquote>
  
  <p>According to this definition it is legal to do the following (<code>g1</code> and <code>g2</code> are the functions that describe two algorithms complexity):</p>
  
  <pre><code>g1(n) = 9999 * n^2 + n ∈ O(9999 * n^2)
  
  g2(n) = 5 * n^2 + N ∈ O(5 * n^2)
  </code></pre>
  
  <p>And it is also legal to note functions as:</p>
  
  <pre><code>g1(n) = 9999 * N^2 + N ∈ O(n^2)
  
  g2(n) = 5 * N^2 + N ∈ O(n^2)
  </code></pre>
  
  <p>As you can see the first variant <code>O(9999*N^2)</code> vs <code>(5*N^2)</code> is much more precise and gives us clear vision which algorithm is faster. The second one does not show us anything.</p>
  
  <p>The question is: why nobody use the first variant? </p>