Метод 1: двухточечный подход
- Инициализировать два указателя: один в начале массива (левый указатель), а другой в конце массива (правый указатель).
- Увеличивайте левый указатель, пока не встретите нечетное число.
- Уменьшайте правый указатель, пока не встретите четное число.
- Поменяйте местами элементы у левого и правого указателей.
- Повторяйте шаги 2–4, пока левый указатель не окажется над правым указателем.
- Теперь массив отсортирован по четности.
Метод 2: подход к секционированию
- Используйте алгоритм разделения, аналогичный тому, который используется при быстрой сортировке.
- Инициализировать два указателя: один в начале массива (левый указатель), а другой в конце массива (правый указатель).
- Перемещайте левый указатель вправо, пока не встретите нечетное число.
- Перемещайте правый указатель влево, пока не встретите четное число.
- Если левый указатель по-прежнему находится слева от правого указателя, поменяйте местами элементы у левого и правого указателей.
- Повторяйте шаги 3–4, пока левый указатель не окажется над правым указателем.
- Теперь массив отсортирован по четности.
Метод 3: вспомогательные массивы
- Создайте два вспомогательных массива: один для четных чисел, другой для нечетных чисел.
- Перейти исходный массив и поместить четные числа в четный массив, а нечетные числа в нечетный массив.
- Объедините четный и нечетный массив, чтобы получить отсортированный по четности массив.
Метод 4. Перестановка на месте
- Инициализировать два указателя: один в начале массива (левый указатель), а другой в конце массива (правый указатель).
- Перемещайте левый указатель вправо, пока не встретите нечетное число.
- Перемещайте правый указатель влево, пока не встретите четное число.
- Поменяйте местами элементы у левого и правого указателей.
- Повторяйте шаги 2–4, пока левый указатель не окажется над правым указателем.
- Теперь массив отсортирован по четности: четные числа появляются раньше нечетных.