If we know the size of heap we can get the minimum element in O(n);

int findMinFromMaxHeap(int ar[], int n)
{
      if ( (n+1) & n == 0)
      {
              for (i = n>>1; i < n; i++)
                       min = min > ar[i] ? ar[i] : min;
      }
      else
      {
             int x = n, y = 1;
              while(x >1)
              {
                       y <<= 1;
                       x >>= 1;
              }
              y -= 1;
              x = (n - y + 1) / 2;
              for (i = y / 2 + x; i < n; i++)
                      min = min > ar[i] ? ar[i] : min;
        }
        return min;
}

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to