• Дано натуральное число n. Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами.
    Как работает этот цикл? Почему цифры сдвигаются влево?

    question img

Ответы 6

  • Ну, цифры сдвигаются влево из-за особенности пузырьковой сортировки - подробнее о ней можно почитать здесь: https://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D1%83%D0%B7%D1%8B%D1%80%D1%8C%D0%BA%D0%BE%D0%BC
    • Автор:

      roxy77
    • 6 лет назад
    • 0
  • Энивей, цикл на проверку натуральности не может не работать.
    • Автор:

      morse
    • 6 лет назад
    • 0
  • Причем тут цикл на проверку натуральности? Пишешь всякую ерунду.
  • О господи, ты вообще подключаешь мозги, когда кому - то пишешь?
    • Автор:

      kaufman
    • 6 лет назад
    • 0
  • Здесь показан алгоритм сортировки пузырьком

    Видимо, repeat until стоит как проверка вводимого числа на натуральность

    Число n далее преобразуются в строку так как строка позволяет сравнивать и обменивать местами цифры.

    Далее идет реализация самой сортировки и вывод

  • С виду это на Паскале программа, но тогда в ней цикл repeat until никак не работает, поскольку записан он неверно. Формат записи другой. В начале цикла пишется repeat, а until n>0 пишется в конце. Похоже, что этот заголовок кто-то списал с Бейсика.

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

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years