Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
74 / 74 / 13
Регистрация: 21.10.2010
Сообщений: 376

Хитрая сортировка

06.12.2011, 14:34. Показов 3841. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие объясните, совсем не доходит до меня.

Дана последовательность чисел. Нужно упорядочить эти числа по возрастанию последней цифры, а при равенстве последних цифр - по неубыванию самих чисел.

Заглушка:

Ввод
7
12 15 43 13 20 1 15

Вывод:

20 1 12 13 43 15 15
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2011, 14:34
Ответы с готовыми решениями:

Хитрая задачка
Дано n и m - два целые числа (1 ≤ n, m ≤ 10^8). Надо: 1) Делить n (несмотря на остаток) до 1; 2) Умножать m столько же раз, сколько...

хитрая константа не даёт создать обычный массив
Почему я не могу создать обычный массив, указав константу в качестве количества элементов? int n=10; const int N(n); //N вроде...

Хитрая сортировка
Из массива путем однократного просмотра выбирается последовательность элементов, расположенных в порядке возрастания, переносится в...

4
программист С++
 Аватар для sandye51
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
06.12.2011, 14:48
C++
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
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <cstdlib>
#include <functional>
 
template <typename T>
struct sorter :
        public std::binary_function<T, T, bool>
{
    bool operator() (const T& a, const T& b) const
    {
        T aa = a % 10, bb = b % 10;
        if (aa != bb)
            return aa < bb;
        else
            return a < b;
    }
};
 
int main()
{
    unsigned int size;
    std::cout << "Enter the N" << std::endl;
    std::cin >> size;
 
    std::vector<int> vector(size);
 
    std::cout << "Enter the vector" << std::endl;
    for (std::vector<int>::iterator i = vector.begin(), end = vector.end(); i != end; ++i)
        std::cin >> *i;
 
    std::sort(vector.begin(), vector.end(), sorter<int>());
 
    std::copy(vector.begin(), vector.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    return EXIT_SUCCESS;
}
0
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
06.12.2011, 15:36
Цитата Сообщение от Hi4ko Посмотреть сообщение
Условие объясните, совсем не доходит до меня.
алгоритм сортировки не зависит от условий и критериев, по которым сортируются элементы
например, если у вас есть сортировка по возрастанию, то где-то в ней
вы сравниваете два элемента с помощю оператора >, например, a > b
это можно заменить вызовом функции (компаратора), например, cmp(a, b)
и алгоритм сортировки от этого не изменится

поэтому вам нужно:
написать функцию для сравнения элементов
отсортировать последовательность любым алгоритмом, используя эту функцию
0
74 / 74 / 13
Регистрация: 21.10.2010
Сообщений: 376
07.12.2011, 03:13  [ТС]
уже всё сделали, спасибо)
0
 Аватар для alkagolik
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
07.12.2011, 04:34
вариант
C
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
 
int comp(const void *i, const void *j){
  return *(int *)i - *(int *)j;
}
 
int main( void )
{
    int size = 10;
    int *arr, *tmp;
    int t, n;
    srand(time(0));
 
    if ( (arr = (int *) malloc(size * sizeof(int))) == NULL)
        return EXIT_FAILURE;
    if ( (tmp = (int *) malloc(size * sizeof(int))) == NULL)
        return EXIT_FAILURE;
 
    for ( int i = 0; i < size; ++i)
    {
        arr[ i ] = rand() % (2 * size);
        printf("%2i ", arr[ i ]);
    }
    puts("");
 
    t = arr[ size - 1 ];
 
    qsort(arr, size, sizeof(int), comp);
 
    for (int i = size - 1; i >= 0; --i)
        if ( arr[ i ] == t )
        {
            n = i;
            break;
        }
 
    memcpy(tmp, (arr + n + 1), sizeof(int) * ( size - n - 1 ) );
    memcpy( (arr + size - n - 1),  arr, sizeof(int) * ( n + 1 ) );
    memcpy( arr, tmp, sizeof(int) * ( size - n - 1 ) );
 
    for (int i = 0; i < size; ++i)
        printf("%2i ", arr[ i ]);
    puts("");
 
    free(arr);
    free(tmp);
 
    return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2011, 04:34
Помогаю со студенческими работами здесь

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

Хитрая сортировка многомерного массива
Добрый день. У меня есть массив children, следующей структуры: Array ( =&gt; Array ( =&gt; grade_item...

Сортировка "Хитрая"
Задание следующее: Из массива путем однократного просмотра выбирается последовательность элементов, находящихся в порядке возрастания,...

Хитрая выдача
Добрый день. Столкнулись с такой проблемой: по запросу &quot;купить слона&quot; и сопутствующим НЧ в регионе выдает московские сайты. ОБНОВЛЯЕМ...

Хитрая табличка
Есть такая проблема: Формирую я отчет по автомобилям на ремонте. на каждое авто может быть по несколько документов. в этих документах...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru