Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int SIZE = 8;
- void splitParity(int arr[], int n, int& outNumOdd, int& outNumEven);
- void main() {
- int i, numOdds, numEvens;
- int arr[SIZE] = {2,5,7,12,12,15,4,16};
- splitParity(arr, SIZE, numOdds, numEvens);
- cout << "numOdds=" << numOdds << endl;
- cout << "numEvens=" << numEvens << endl;
- for (i = 0; i < SIZE; i++) {
- cout << arr[i] << " ";
- }
- cout << endl;
- }
- void splitParity(int arr[], int n, int& outNumOdd, int& outNumEven) {
- int currNumOdd, currNumEven, left, right, tempVal;
- left = 0;
- right = n-1;
- if (n == 1) {
- if (arr[left]%2 == 0) {
- outNumEven = 1;
- outNumOdd = 0; //fix
- }
- else {
- outNumEven = 0;
- outNumOdd = 1; //fix
- }
- return;
- }
- else {
- splitParity(arr, n-1, currNumOdd, currNumEven);
- if ((arr[currNumOdd]%2 == 0) && (arr[right]%2 != 0)) {
- tempVal = arr[currNumOdd];
- arr[currNumOdd] = arr[right];
- arr[right] = tempVal;
- currNumOdd++;
- } else if (arr[right] % 2 == 0) {
- currNumEven++;
- }
- outNumOdd = currNumOdd;
- outNumEven = currNumEven;
- }
- }
Add Comment
Please, Sign In to add comment