Я едва новичок в программировании, мне нужно отсортировать массив целых чисел, имея все нечетные числа слева и четные числа справа, вызывая функцию.
Это мой код.
#include <iostream>
void sortOdd(int arr[], int size) {
int odd = 0;
int even = size - 1;
while (even > odd) {
int temp;
while(arr[odd] % 2 != 0) {
odd++;
}
while(arr[even] % 2 == 0) {
even--;
}
temp = arr[odd];
arr[odd] = arr[even];
arr[even] = temp;
odd++;
even--;
}
}
int main () {
int arr[] = {1, 2, 3, 4, 5, 6};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "unsorted array" << endl;
for (int i = 0; i < size; i++) cout << arr[i] << " ";
sortOdd(arr, size);
cout << "sorted array" << endl;
for (int i = 0; i < size; i++) cout << arr[i] << " ";
return 0;
}
Проблема в том, что он сортирует / заменяет только внешние элементы, а не средние, и выдает что-то вроде этого:
unsorted array
1 2 3 4 5 6
sorted array
1 5 4 3 2 6
Может кто-нибудь помочь с тем, что я делаюздесь не так?
Спасибо.