How to arrange even first and odd after in array with C++

2 Answers

0 votes
#include <iostream>

int main() {
    int arr[] = {3, 4, 8, 2, 9, 4, 5, 6};
    
    int size = sizeof(arr) / sizeof(arr[0]);
      
    int left = 0, right = size - 1; 
    
    while (left < right) {
        if (arr[left] % 2) { // odd
            while ((arr[right] % 2 == 1) && right > left) 
                right--;
            std::swap(arr[left++], arr[right--]);
        } else { // even
            left++;
        }
    }
  
    for (int i = 0; i < size; i++)
        std::cout << arr[i] << " ";
}




/*
run:

6 4 8 2 4 9 5 3 

*/

 



answered Aug 27, 2022 by avibootz
edited Aug 28, 2022 by avibootz
0 votes
#include <iostream>

void ArrangeEvenOdd(int arr[], int size) {
    int left = 0, right = size - 1; 
    
    while (left < right) {
        if (arr[left] % 2) { // odd
            while ((arr[right] % 2 == 1) && right > left) 
                right--;
            std::swap(arr[left++], arr[right--]);
        } else { // even
            left++;
        }
    }
}

int main() {
    int arr[] = {3, 4, 8, 2, 9, 4, 5, 6};
    
    int size = sizeof(arr) / sizeof(arr[0]);
      
    ArrangeEvenOdd(arr, size);
  
    for (int i = 0; i < size; i++)
        std::cout << arr[i] << " ";
}




/*
run:

6 4 8 2 4 9 5 3 

*/

 



answered Aug 27, 2022 by avibootz
edited Aug 28, 2022 by avibootz

Related questions

1 answer 104 views
1 answer 115 views
1 answer 108 views
1 answer 110 views
1 answer 119 views
1 answer 140 views
1 answer 107 views
...