First Missing Positive_桶排序

不好想,用桶排序解决。

First Missing Positive_桶排序_02First Missing Positive_桶排序_03

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