Algorithm to find first available number
So recently I stumbled across a programming quiz to which I later returned because it somehow fascinated me.
Problem
Finding the first available number (or the smallest missing number) in a list is a common problem in Computer Science (for example for Defragmenting or generating keys) and describes the search for the smallest natural number, which is not part of a set X of natural numbers. X is a set of distinct natural numbers (and being a set, is not ordered).
We are now looking for a function with linear worst-case time complexity O(n).
Example
We define X as a set of distinct natural numbers:
X = {23,9,12,0,11,1,13,7,21,14,5,4,17,19,3,6,2}
So in this set, we find that the number 8 is the first available number (smallest missing number). So running the algorithm over the above set should return 8.