UniLecs #156. Непростая сортировка - 2
UniLecsЗадача: дан массив натуральных чисел. Необходимо отсортировать массив по возрастанию суммы цифр чисел.
Входные данные: arr - массив натуральных чисел от 1 до 10^6. Размер массива от 1 до 10^6.
Вывод: отсортированный массив по возрастанию суммы цифр чисел.
Пример: arr = [ 19, 22, 30 ]
Answer = [ 30, 22, 19 ],
т.к. 19 (сумма цифр = 10), 22 (сумма цифр = 4), 30 (сумма цифр = 3)
Идея: в данной задаче нам необходима особенная сортировка, а именно особенное условие при сравнении элементов. Сравнивать будем сумму цифр числа, выполним эту операцию в отдельной функции.
Саму сортировку в данном случае можно выбрать любую. В своей реализации на C# я воспользовался встроенной функцией сортировки, позволяющей добавить свою кастомную проверку элементов. Детали реализации смотри ниже.
Реализация:
https://gist.github.com/unilecs/cafa43ee7cffa0620cbb9281fd7b101f
Play-test: https://dotnetfiddle.net/BTwZ7Q