how can i rearrange an array so all the even numbers will have indices less than those for the odd numbers. This is in C. I have code for the rest of the program
does order matters?
no order does not matter
void rearrange(int a[]) {int i, b[SIZE]; for(i=0;i<SIZE;i++) {if(a[i]%2) {THEN ITS ODD}
thats what i have so far
you can create new array and check old array if it's even and put those numbers there :D and later put odd numbers
I am not sure if i know how to do that but i can try. if(a[i]%2) {b[i] = a[i];} //store odd values into new array else{} //I am not sure what to do with it if its even then. make another array?
no you need to index from 0, not to same position
oh!!! okay that makes sense now. thanks for the help thomas, i appreciate it
i think it's bad solution but it works :D
ha I am sure there are other ways to do it but hey it works for me!
You could sort the numbers by their modulus value: qsort( number % 2 ); Something like that.
Actually this problem is very easy. Declare another integer array with same length, and then copy even numbers first, then append remaining numbers (thee odd ones) in last of the second array. The code snippet to do this is shown below: int[] arrange(int a[], size) { int *b = new int[size]; int index = 0; // variable to track position in second array // copy even numbers first for (int i = 0; i < size; ++i) { if (a[i]%2 == 0) { b[index] = a[i]; ++b; } } // copy all odd numbers for (int i = 0; i < size; ++i) { if (a[i]%2 != 0) { b[index] = a[i]; ++b; } } // now return new array return b; } Hope this will help you. Happy programming.
Join our real-time social learning platform and learn together with your friends!