Here is my solution, it Yields 88% in evaluation- Time is O(n), Correctness 100%, Performance 75%.  REMEMBER - it is possible to have an array of all negative numbers, or numbers that exceed 100,000.  Most of the above solutions (with actual code) yield much lower scores, or just do not work.  Others seem to be irrelevant to the Missing Integer problem presented on Codility.
int compare( const void * arg1, const void * arg2 )
{
    return *((int*)arg1) - *((int*)arg2);
}
solution( int A[], int N )
{
    // Make a copy of the original array
    // So as not to disrupt it's contents.
    int * A2 = (int*)malloc( sizeof(int) * N );
    memcpy( A2, A1, sizeof(int) * N );
    // Quick sort it.
    qsort( &A2[0], N, sizeof(int), compare );
    // Start out with a minimum of 1 (lowest positive number)
    int min = 1;
    int i = 0;
    // Skip past any negative or 0 numbers.
    while( (A2[i] < 0) && (i < N )
    {
        i++;
    }
    // A variable to tell if we found the current minimum
    int found;
    while( i < N )
    {
        // We have not yet found the current minimum
        found = 0;
        while( (A2[i] == min) && (i < N) )
        {
            // We have found the current minimum
            found = 1;
            // move past all in the array that are that minimum
            i++;
        }
        // If we are at the end of the array
        if( i == N )
        {
            // Increment min once more and get out.
            min++;
            break;
        }
        // If we found the current minimum in the array
        if( found == 1 )
        {
            // progress to the next minimum
            min++;
        }
        else
        {
            // We did not find the current minimum - it is missing
            // Get out - the current minimum is the missing one
            break;
        }
    }
    // Always free memory.
    free( A2 );
    return min;
}