On Wednesday, 19 February 2014 at 22:05:49 UTC, Peter Alexander wrote:
O(1) = O(2) = O(1,000,000) = O(k) for any constant k.

If you want to get even more anal about it, searching an array is technically O(1) because an array cannot be bigger than size_t.max, and since size_t.max is a constant, O(size_t.max) is O(1). Again, completely misleading but technically correct in an esoteric, academic way.

That's a useless oversimplification since for all sizes lesser than size_t.max there is a better input-length depending bound for the complexity. Just like every algorithm that is in O(n) is also in O(n^3), but usually you are interested

• in the smallest upper bound
• that depends on the input.

The input dependency is important because it lets us reason about how the algorithm might scale.

Now, let n be the size of input, for example in this application,
n is input.length.
--
int[] input = getInputFromSomeWhere();
foreach(i; input)
{
   if(i.among!(1, 42, 12))
   {
       writeln(i);
       break;
   }
}
--

Now, among does not depend of input.length and it will never do in any application. That is the sole reason I say it's O(1).



Reply via email to