May be this helps 
http://ds-gyan.blogspot.com/2009/12/two-numbers-with-minimum-difference.html

On Sep 28, 10:28 am, "coolfrog$" <dixit.coolfrog.div...@gmail.com>
wrote:
> @ sorurav
>     yes , the basic logic is required so that the code can be understood in
> single Run..
>     i also request the same to all dear friends.....
> Regards..
>
>
>
>
>
> On Tue, Sep 28, 2010 at 8:11 PM, sourav <souravs...@gmail.com> wrote:
> > Hi Friends
>
> > This is an interesting problem and request you all to give a brief
> > intro to your code before putting the code. Or you may just mention
> > the under lying concept in the code. This will be of great help and
> > others will find it more ready to improve by adding there approach.
>
> > Coming back to the problem an O(n) solution can exist by following the
> > approach of building a min heap (or max heap) from an array of
> > elements. A mean heap from an array of elements can be built by
> > starting from middle element (all elements from mid +1 to end are them
> > selves single element min heaps) (references available in Cormen or
> > other books).
>
> > During constructing the mean heap always track the min difference
> > between any two elements in the so far constructed heap. At any
> > instant if you are handling root 'a' which has left child l and right
> > child r and aiming to build a min heap rooted at a, then the following
> > cases arise
>
> > 1. a is less than both l and r. In this case no movement of a is
> > required. Now find |a-l| = x and |a-r| = y. 'a' cannot have a
> > difference z with any element under tree rooted at  l such that z < x
> > becuase l is the least element in the tree rooted at l. Similarly 'a'
> > cannot have a difference z' with any element under tree rooted at r
> > such that z' < r. So least of x and y is the min diff between any
> > elements in the so far constructed min heap rooted at 'a'.
>
> > 2. a is less than l but greater than r. In this case r will replace a
> > and a need to be pushed down the its right child. While pushing 'a'
> > down keep calculating the differences between 'a' and 'r' as long as
> > 'a' is not pushed down to a node where it is the min element. While
> > you keep calculating also keep track of the min diff calculated so far
> > (say 'p'). Compare this 'p' with |a-l| and min diff between any two
> > elements for the tree rooted at l. Least of these three will be the
> > min diff between any 2 elements for the min head rooted at 'r' (which
> > replaced 'a''s position.
>
> > 3. Both 'l' and 'r' are less than 'a'. Take the lesser or 'l' and 'r'
> > and replace that with 'a' and push 'a' down as in case 2 (normal min
> > heap construction algo).
>
> > Thus we can continue building the min heap and at the end have the min
> > diff between any 2 elements in the array. Just we keep tracking the
> > min diff, we can also keep note of the 2 elements than are
> > contributing to this min diff my adding some more steps.
>
> > This idea is all based on the fact that min heap can be constructed
> > from an array in linear time.
>
> > Thanks,
> > Sourav
>
> > On Sep 27, 1:32 pm, rahul <rahulr...@gmail.com> wrote:
> > > If their is no constrain on assumptions.
>
> > > 1.Sort the array.
> > > 2. check the dif between 2 elements.
>
> > > { 99,35,45,33,88,9098,112,33455,678,3}
>
> > > sorted arrary : { } would be something.
> > > now update the min_diff.
>
> > > another example : { 7,8,1,3,5,4}
> > > sorted arrary  : { 1,3,4,5,7,8}
> > > min diff is 1.
>
> > > Please correct me if i missed something.
>
> > > On Mon, Sep 27, 2010 at 1:13 PM, satish <satish....@gmail.com> wrote:
> > > > step1>construct heap using siftdown. //  time complexity wil be O(n)
> > and
> > > > space complexity O(1).
> > > > step2>take mindifference=a[1].
> > > > step3>for  i=1 ,i<=n/2 do
> > > >           {   find the difference of
> > (root,root-left),(root,root->right)and
> > > > (root->left,root->right).and maintain mindifference is the  smallest
> > > > difference of among
> > > >                three differences.
> > > >          }
> > > > step4>return mindifference.
>
> > > > plz correct me if im wrong....
>
> > > > --
> > > > 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>
> > <algogeeks%2bunsubscr...@googlegroups.com<algogeeks%252bunsubscr...@googleg 
> > roups.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<algogeeks%2bunsubscr...@googlegroups 
> > .com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/algogeeks?hl=en.
>
> --
> *Divesh*
> (¨`·.·´¨) Always
>   `·.¸(¨`·.·´¨ ) Keep
>   (¨`·.·´¨)¸.·´Smiling!
>    `·.¸.·´" Life can give u 100's of reason 2cry,but u can give life 1000's
> of reasons 2Smile"

-- 
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