Please check the DS Symmetric Min-Max Heap, the root node is empty in this
DS, we can use of this and use the root always median.

I think this will give the median with O(1) and insertion and deletion costs
O(logN).

Thanks & regards,
Sathaiah Dontula

On Tue, Aug 3, 2010 at 7:59 AM, Gene <gene.ress...@gmail.com> wrote:

> This is a great solution.
>
> On Jul 28, 3:09 am, janak <chandar...@gmail.com> wrote:
> > How about keeping heap?
> > Have two heaps 1. max heap and 2. min heap
> > keep them equal size all the time and shift top element from one to
> > other when required...
> >
> >
> >
> > On Wed, Jul 28, 2010 at 7:46 AM, Gene <gene.ress...@gmail.com> wrote:
> > > I think you have confused the statement of this problem.  The "(in
> > > sorted order)" comment makes no sense because a median is exactly one
> > > number.  One number is always sorted.
> >
> > > After every stream element is read, you want to be able to get the
> > > median of all elements read so far.
> >
> > > You're correct that the way to do this is maintain the elements in
> > > some kind of sorted data structure where you have O(1) access to the
> > > middle element.  An array or list will work fine, but each stream
> > > element will require O(n) to insert in the sorted order (just as you'd
> > > do for insertion sort).  It's easy to use a balanced tree instead.
> > > This reduces the processing time for each element to O(log n).  You
> > > must maintain the invariant that the root of the tree is the median,
> > > so access time is still O(1).  When a new element is read, it goes in
> > > either the left or right subtree of the root.  This may cause the
> > > median to shift by 0 or 1 position in either direction.  In this case,
> > > you'll always be able to pull the successor or predecessor of the
> > > root--whichever is the new median--up to the root by using e.g. AVL
> > > rotations.  You'd have to prove that this does not make the tree too
> > > unbalanced so that the O(log n) insertion is hurt, but I don't think
> > > this would be hard.
> >
> > > On Jul 24, 10:32 am, jalaj jaiswal <jalaj.jaiswa...@gmail.com> wrote:
> > >> You are given a stream of numbers which can be positive or negative.
> You are
> > >> required to provide an operation FIND MEDIAN..which when invoked
> should be
> > >> able return the median of the numbers in stream (in sorted order) in
> O(1)
> > >> time.
> >
> > >> Eg: 0 1 2 3 4
> > >> Right FIND MEDIAN returns 2 as median
> >
> > >> Now input is -2 -4
> > >> So Stream = 0 1 2 3 -2 -2 -4
> > >> Sorted Stream would be -4 -2 0 1 2 3 4 and FIND MEDIAN returns 1
> >
> > >> --
> > >> With Regards,
> > >> Jalaj Jaiswal
> > >> +919026283397
> > >> B.TECH IT
> > >> IIIT ALLAHABAD
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups "Algorithm Geeks" group.
> > > To post to this group, send email to algoge...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
> .
> > > For more options, visit this group athttp://
> groups.google.com/group/algogeeks?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algoge...@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@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