UniLecs #165. Четная сортировка
UniLecsЗадача: дан числовой массив. Необходимо отсортировать массив таким образом, чтобы слева располагались в порядке возрастания только четные числа, справа - все нечетные в порядке возрастания (ноль обычно относят к четным числам).
Входные данные: arr - массив целых чисел по модулю не превосходящих 10^5. Размер массива от 1 до 10^5.
Вывод: преобразованный массив.
Пример:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Answer: [2, 4, 6, 8, 10, 1, 3, 5, 7, 9]
Идея: применим кастомную реализацию сортировки, а именно особенное условие при сравнении элементов. Сравнивать будем четность/нечетность цифр, а дальше обычное равенство двух чисел!
Реализация: саму сортировку в данном случае можно выбрать любую. В своей реализации на C# я воспользовался встроенной функцией сортировки, позволяющей добавить свою кастомную проверку элементов. Детали реализации смотри ниже.
https://gist.github.com/unilecs/472732daed653965b776277c825dccd8
Play-test: https://dotnetfiddle.net/c5ZWk8
Решения подписчиков:
Евгений, С++, Python, Ruby
https://gist.github.com/jin-x/09302b072e7d8ad227b0b591b4f549e2