Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
#1

Хитрая сортировка - C++

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

Условие объясните, совсем не доходит до меня.

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

Заглушка:

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

Вывод:

20 1 12 13 43 15 15
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2011, 14:34     Хитрая сортировка
Посмотрите здесь:

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

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

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

Хитрая переадресация - Joomla
Всем привет, уважаемые форумчане! имеется сайт и его поддомен. на поддомене лежит устаревший сайт, размещенный там исключительно для...

Не хитрая задачка по ТВ - Теория вероятностей
Отделение банка в среднем обслуживает 100 клиентов в день.Оценить вероятность того,что в отделении банка будет обслежено болие 150...

Хитрая задача - C (Си)
Всем доброго времени суток друзья! Мне задали 4 задачи на программирование. 2 я уже решил, последнюю тоже смогу. А вот с 3 затык. Условие: ...

Хитрая задачка в маткаде - MathCAD
Доброго времени суток, уважаемые пользователи математических программ! Столкнулся с достаточно примитивной задачей (см. вложение)....

Хитрая сборка в qmake - C++ Qt
Есть некий open source проект на C, перенесенный в Creator, и возникла необходимость определить последовательность сборки. А именно,...

Хитрая реклама на сайте - HTML, CSS
Доброго времени суток дорогие форумчане. Понимаю что тема баянообразная, но сколько постов не читал, не мог найти то что действительно...

Хитрая домашняя сеть - Wi-Fi
У меня дома 3 компьютера: 2 настольных и один ноутбук. Нас трое товарищей живущих вместе. Через 5 дней нашу квартиру подключат к районной...

Хитрая замена в интеграле - Математический анализ
Добрый вечер. Есть вот такой интеграл \int \frac{x^5}{\sqrt{x^3-1}} По заданию нужно воспользоваться заменой \frac{1}{x^3-1}. ...

DllImport и хитрая структура - C#
Подключаю в C# обычную Си-шную DLL. Встретилась функция, которая принимает на вход структуру такого вида: typedef struct _WIN32_COMMAND {...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
06.12.2011, 14:48     Хитрая сортировка #2
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;
}
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
06.12.2011, 15:36     Хитрая сортировка #3
Цитата Сообщение от Hi4ko Посмотреть сообщение
Условие объясните, совсем не доходит до меня.
алгоритм сортировки не зависит от условий и критериев, по которым сортируются элементы
например, если у вас есть сортировка по возрастанию, то где-то в ней
вы сравниваете два элемента с помощю оператора >, например, a > b
это можно заменить вызовом функции (компаратора), например, cmp(a, b)
и алгоритм сортировки от этого не изменится

поэтому вам нужно:
написать функцию для сравнения элементов
отсортировать последовательность любым алгоритмом, используя эту функцию
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
07.12.2011, 03:13  [ТС]     Хитрая сортировка #4
уже всё сделали, спасибо)
alkagolik
Заблокирован
07.12.2011, 04:34     Хитрая сортировка #5
вариант
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;
}
Yandex
Объявления
07.12.2011, 04:34     Хитрая сортировка
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru