Задача
Дана последовательность чисел. Вам следует упорядочить их по неубыванию последней цифры, а при равенстве последних цифр – по неубыванию самих чисел.
Входные данные
Первая строка содержит число [latex] n [/latex] ([latex] 1 \leqslant n \leqslant 100 [/latex]), а вторая — сами натуральные числа, не превышающие [latex] 32000 [/latex].
Выходные данные
Выведите последовательность чисел, упорядоченную согласно условию.
Тесты
№ | Входные данные | Выходные данные |
1 | 7 12 15 43 13 20 1 15 |
20 1 12 13 43 15 15 |
2 | 10 82 22 19 90 34 17 588 921 200 121 |
90 200 121 921 22 82 34 17 588 19 |
3 | 4 162 9801 37 14 |
9801 162 14 37 |
Код программы
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 |
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool comp (const int& a, const int& b) { if (a % 10 == b % 10) return (a < b); else return a % 10 < b % 10; } int main() { int n, a; vector<int> array; cin >> n; for (int i = 0; i < n; i++) { cin >> a; array.push_back(a); } sort (array.begin(), array.end(), comp); for (int a = 0; a < n; a++) { cout << array[a] << " "; } return 0; } |
Решение задачи
Для решения этой задачи необходимо объявить вектор, который будет хранить все числа, введенные пользователем, например,
array.
Сортировку будем проводить с помощью функции
sort. Для правильного упорядочивания чисел, напишем функцию компаратор
comp, для сравнения чисел и решения, стоит ли их менять местами.
В конце выводим вектор
array.
Нет, давайте так делать не будем. Для решения этой задачи два массива не нужны. Для любого порядка сортировки нет необходимости в двух массивах. Попробуйте избавиться от tempArray.
Спасибо, исправил.
Очень хорошо, молодец. Двигаемся дальше.
Вам нужно либо менять местами соседние элементы, либо нет. Для этого не нужно три условных оператора. Нужен только один.
Спасибо, исправил.
Странно, что Вы отказались от своего предыдущего решения изз-за совета сделать составное условие в условном операторе.
Новое решение меня полностью устраивает. Я тоже так решал. Только немного лаконичнее: