Rohit's approach put into a typical c++ construct... inline is_odd(int x) { return ((x & 1) == 1); }
struct new_compare { bool operator () (int i, int j) { bool b_i_odd = is_odd(i); bool b_j_odd = is_odd(j); if ((b_i_odd && b_j_odd) || (!b_i_odd && !b_j_odd)) return (i < j); else if (b_i_odd && !b_j_odd) return 1; else return 0; } }; std::vector<int> array_to_sort; std::sort( array_to_sort.begin(), array_to_sort.end(), new_compare ); Of course, everything written above can be stated as a C program, or an algorithm. The sort( ) function can be replaced with any in-place sorting algorithm, the new_compare class with either a function ptr, or a simple in-place check. On Tue, Jun 22, 2010 at 11:10 PM, Naveen Kumar <naveenkumarve...@gmail.com>wrote: > Hi Rohit, > > Can you explain your approach a bit more? > > On Sun, Jun 20, 2010 at 2:48 PM, Rohit Saraf > <rohit.kumar.sa...@gmail.com> wrote: > > Why not just change the definition of when one number is bigger than > another > > and do normal sort ? > > I guess that is better and simpler. > > -------------------------------------------------- > > Rohit Saraf > > Second Year Undergraduate, > > Dept. of Computer Science and Engineering > > IIT Bombay > > http://www.cse.iitb.ac.in/~rohitfeb14 > > > > > > On Sun, Jun 20, 2010 at 7:52 AM, Anurag Sharma <anuragvic...@gmail.com> > > wrote: > >> > >> Keep 2 pointers 'start' and 'end' and make them point to start and > >> beginning of the array. > >> > >> Now keep decresing end pointer until an odd element is found > >> Keep increasing the start pointer until an even element is found > >> swap the elements at start and end > >> Continue the above 3 steps till start<end > >> > >> Now the start/end points to a border element which divides the array in > 2 > >> parts, 1st have having all odd numbers and 2nd half with all even > numbers. > >> > >> Now use any inplace sorting algorithm to sort in descending order the > >> portion containing all odd numbers and in increasing order the portion > >> containing all even numbers. > >> Hope its clear. > >> > >> Anurag Sharma > >> > >> > >> On Sun, Jun 20, 2010 at 2:15 AM, vijay <auvija...@gmail.com> wrote: > >>> > >>> There is an array of odd and even numbers. Now, sort them in such a > >>> way that the top portion of the array contains odd numbers, bottom > >>> portion contains even numbers. The odd numbers are to be sorted in > >>> descending order and the even numbers in ascending order. You are not > >>> allowed to use any extra array and it has to use a conventional > >>> sorting mechanism and should not do any pre or post processing > >>> > >>> -- > >>> 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<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<algogeeks%2bunsubscr...@googlegroups.com> > . > > For more options, visit this group at > > http://groups.google.com/group/algogeeks?hl=en. > > > > > > -- > Cheers > Naveen Kumar > > -- > 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.