Сортировка массива по убыванию суммы цифр
Информатика

Напишите программу, которая упорядочивает натуральные числа в массиве в порядке убывания суммы цифр десятичной записи

Напишите программу, которая упорядочивает натуральные числа в массиве в порядке убывания суммы цифр десятичной записи числа. При равной сумме цифр чисел должен сохраняться исходный порядок.

Входные данные:
В первой строке содержится размер массива N.
Во второй строке через пробел задаются N чисел - элементы массива.
Гарантируется, что N > 0.

Выходные данные:
Программа должна вывести в одной строке элементы массива, отсортированные в порядке убывания суммы цифр десятичной записи числа, разделив их пробелами.

Примеры:
Ввод:
6
9 21 32 55 81 11

Вывод:
55 9 81 32 21 11
Верные ответы (1):
  • Орел
    Орел
    7
    Показать ответ
    Задача: Сортировка массива по убыванию суммы цифр

    Описание:
    Программа должна упорядочить натуральные числа в массиве в порядке убывания суммы цифр каждого числа. Если два числа имеют одинаковую сумму цифр, то их порядок должен оставаться неизменным.

    Пояснение:
    Для решения этой задачи можно использовать алгоритм сортировки пузырьком. Сначала все числа в массиве сравниваются по сумме цифр, и если сумма цифр первого числа меньше суммы цифр второго числа, то они меняются местами. Этот процесс повторяется для каждой пары чисел в массиве до тех пор, пока все числа не будут упорядочены. При равной сумме цифр чисел порядок сохраняется. Решение может выглядеть следующим образом:


    def сортировка_по_сумме_цифр(N, arr):
    for i in range(N-1):
    for j in range(N-i-1):
    if сумма_цифр(arr[j]) < сумма_цифр(arr[j+1]):
    arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

    def сумма_цифр(num):
    sum = 0
    while num > 0:
    sum += num % 10
    num //= 10
    return sum

    # Пример использования:
    N = int(input())
    arr = list(map(int, input().split()))

    результат = сортировка_по_сумме_цифр(N, arr)
    print(*результат)


    Совет:
    Чтобы лучше понять эту задачу, рекомендуется ознакомиться с алгоритмами сортировки, особенно с алгоритмом сортировки пузырьком. Также полезно разобраться в работе со строками и арифметическими операциями.

    Проверочное упражнение:
    Напишите программу, которая сортирует следующий массив по убыванию суммы цифр чисел: [21, 156, 73, 45, 120, 89]. Какой будет результат?
Написать свой ответ: