It sets the rightmost bit to 0. Could also be done with
q = len & ~1;

Dave

On Dec 7, 12:50 am, ritesh <riteshcseit...@gmail.com> wrote:
>  q = (len >> 1) << 1;
>
> what this line is accomplishing?
>
> On Dec 4, 12:38 pm, Abioy Sun <abioy....@gmail.com> wrote:
>
>
>
> > Hello,
>
> > 2010/12/4 siva viknesh <sivavikne...@gmail.com>:
>
> > >  Modified 2 color sort problem i.e. you are given an array of integers
> > > containing only 0s and 1s.You have to place all the 0s in even
> > > position and 1s in odd position. And if suppose, no. of 0s exceed no.
> > > of 1s or vice versa then keep them untouched. Do that in ONE PASS and
> > > without taking extra memory (modify the array in-place).
>
> > > For Example :
>
> > > Input Array: {0,1,1,0,1,0,1,0,1,1,1,0,0,1,0,1,1}
> > > Output Array: {0,1,0,1,0,1,0,1,0,1,0,1,0,1,1
> > > ,1,1}
>
> > the problem makes me to recall the quick-sort provided by Knuth in
> > Introduction to Algorithms, 2ed, here I use some skill like he shows.
>
> > eidx = 0 // even index
> > oidx = 1 // odd index
> > while (eidx < len && oidx < len):
> >     while (eidx < len && array[eidx] == 1) eidx += 2;
> >     while (oidx < len && array[oidx] == 0) oidx += 2;
>
> >     if (eidx < len && oidx < len) swap(eidx, oidx);}
>
> > if (eidx < len)
> > {
> >     p = eidx;
> >     q = (len >> 1) << 1;
> >     while (p < q)
> >     {
> >         while (p < q && array[p] == 1) p += 2;
> >         while (p < q && array[q] == 0) q -= 2;
> >         if (p < q) swap(p, q);
> >     }}
>
> > else if (oidx < len)
> >     // similar to above- Hide quoted text -
>
> - Show quoted text -

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