Задача
Дана последовательность чисел. Вам следует упорядочить их по неубыванию последней цифры, а при равенстве последних цифр – по неубыванию самих чисел.
Входные данные
Первая строка содержит число $n \ (1 \leqslant n \leqslant 1000)$, а вторая — сами натуральные числа, не превышающие $32000$.
Выходные данные
Выведите последовательность чисел, упорядоченную согласно условию.
Тесты
№ | Входные данные | Выходные данные |
1 | 7 12 15 43 13 20 1 15 |
12 33 14 44 64 77 |
2 | 4 345 112 999 29 |
112 345 29 999 |
3 | 9 78 33 13 0 12 89 20 78 9990 |
0 20 9990 12 13 33 78 78 89 |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <iostream> #include <algorithm> using namespace std; int main() { int n; cin >> n; int mass[n]; for (int i = 0; i < n; i++) { cin >> mass[i]; } for (int i = 0; i < n; i++){ for (int j = 1; j < (n - i); j++) { if (mass[j] % 10 < mass[j-1] % 10) { swap (mass[j-1], mass[j]); } else if ( mass[j] % 10 == mass[j-1] % 10 and mass[j] < mass[j-1]){ swap (mass[j-1], mass[j]); } } } for (int i = 0; i < n; i++) { cout << mass[i] << " "; } return 0; } |
Решение
Воспользуемся алгоритмом пузырьковой сортировки, при которой соседние элементы сравниваются и меняются местами, если следующий элемент меньше предыдущего. Исходя из условия задачи отделяем и реализуем алгоритм непосредственно с последними цифрами чисел последовательности. В случае их равенства сортируем уже сами числа.
Ссылки
- Код на ideone
- Задача на e-olymp
- Засчитанное решение на e-olymp
Вы помните как мы учили функцию sort? Компараторы там всякие писали?
Ещё напомню. Мы обсуждали к чему приводит использование для отступов то пробелов, то табуляций. Вот к таким эффектам приводит, как в Вашем коде.