First Missing Positive

不好想,用桶排序解决。

 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

 

posted @ 2016-07-12 17:29  牧马人夏峥  阅读(91)  评论(0编辑  收藏  举报