# $X = missing_n(\@sorted_numbers); sub missing_n { my ($L, $U) = (0, $#{ $_[0] }); my $p = $L + int(($U - $L)/2); return 1 if $_[0][0] != 1; return $_[0][-1] + 1 if $_[0][-1] == @{ $_[0] }; until ($L == $U) { if ($_[0][$p] == $p+1) { $L = $p + 1 } else { $U = $p } $p = $L + int(($U - $L)/2); } return $_[0][$p-1] + 1; }