不好想,用桶排序解决。
int findMissingPostive(int A[], int n)
{
bucket_sort(A, n);
for (int i = 0; i < n; i++)
if (A[i] != i + 1)
return i + 1;
return n + 1;
}
void bucket_sort(int A[], int n)
{
for (int i = 0; i < n; i++)
{
while (A[i] != i + 1)
{
if (A[i]<=0 || A[i]>n || A[i] == A[A[i] - 1])
break;
swap(A[i], A[A[i] - 1]);
}
}
}
View Code