Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <iostream>
- #include <vector>
- // Сортировка по последней цифре.
- void PocketSort( std::vector<int>& arr )
- {
- if( arr.empty() ) {
- return;
- }
- // Количества элементов.
- std::vector<int> pocketsIndexes( 10, 0 );
- for( const int& value : arr ) {
- ++pocketsIndexes[value % 10];
- }
- // Преобразовываем в индексы концов групп.
- for( int i = 1; i < 10; ++i ) {
- pocketsIndexes[i] += pocketsIndexes[i - 1];
- }
- // Выделяем результирующий массив.
- std::vector<int> result( arr.size() );
- // Копируем в него все элементы arr сразу на нужное место каждый.
- for( int i = arr.size() - 1; i >= 0; --i ) {
- result[--pocketsIndexes[arr[i] % 10]] = arr[i];
- }
- arr = std::move( result );
- }
- int main()
- {
- int n = 0;
- std::cin >> n;
- std::vector<int> arr( n );
- for( int i = 0; i < n; ++i ) {
- std::cin >> arr[i];
- }
- PocketSort( arr );
- for( const int& value : arr ) {
- std::cout << value << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement