Hey guys just wondering how i would have an array of integers

eg

12 8 4 5 14 44 7 3 10

and rearrange it so all then odd numbers are shifted to the front

of the array and the even numbers are shifted to the end.

eg

5 7 3 12 8 4 14 44 10

Printable View

- 11-02-2005bazzanore arrange index of numbers
Hey guys just wondering how i would have an array of integers

eg

12 8 4 5 14 44 7 3 10

and rearrange it so all then odd numbers are shifted to the front

of the array and the even numbers are shifted to the end.

eg

5 7 3 12 8 4 14 44 10 - 11-03-2005laserlight
One way to look at it is that you are simply sorting the array, but with your own comparison requirements.

- 11-03-2005sunnypalsingh
pick up first element...if its odd then leave it...move forward...pick 2nd element...if its even then search(ahead) for the first odd number and exchange...then pick the next element...if its odd leave it....pick up next element and go on......

You'll get odd numbers in front and even numbers in the end..... :D - 11-03-2005cbastard
Another one could be.

take two pointers.first to the first element and second to the last.

Code:`while(first<=second)`

{ while(*first is odd)

{ increment first;}

while(*second is even)

{decrement second;}

if (first<second)

{ swap elements}

}

- 11-03-2005Rashakil Fol
Both sunny's and cbastard's algorithms do not solve the problem because order is not preserved.

- 11-03-2005quzah
Do it the easy way:

1) Copy each odd number as you come across it, into a new array. Then move to step 2.

2) Copy each even number as you come across it into the new array. Then move to step 3.

3) Copy the new array over top of the first one.

Quzah. - 11-03-2005sunnypalsinghQuote:

Originally Posted by**Rashakil Fol**

- 11-03-2005quzah
The word

*shifted*implies keeping the order. When you*shift*bits, you aren't reordering them. You're sliding them down one direction or another.

Quzah. - 11-03-2005sunnypalsinghQuote:

Originally Posted by**quzah**

and bazzono gave this example

12 8 4 5 14 44 7 3 10

to

5 7 3 12 8 4 14 44 10

didn't ask for order - 11-03-2005cbastard
I did'nt bother about the order.

There are two ways of doing thing's.

1. brute force

2.optimal soln (or rather close to optimal because there will

always be another better soln).