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

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

Войти
Регистрация
Восстановить пароль
 
Azu
0 / 0 / 0
Регистрация: 15.12.2011
Сообщений: 4
#1

Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза - C++

15.12.2011, 15:18. Просмотров 432. Ответов 7
Метки нет (Все метки)

Условие: есть неупорядоченный массив, нужно упорядочить его таки образом, чтобы вначале были элементы встречающиеся более одного раза.
например
дано: 1 2 3 2 1
получается: 11223
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 15:18     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза
Посмотрите здесь:

C++ Вывести все элементы массива, встречающиеся более одного раза
Удалить из строки все символы встречающиеся более одного раза C++
Изменить матрицу так, чтобы в строках остались элементы, которые встречаются более одного раза, а другие заменить нулями C++
C++ Расположить элементы матрицы так, чтобы на побочной диагонали были бы максимальные элементы строк
Изменить заданный числовой массив так, чтобы элементы были расположены в нем в обратном порядке C++
C++ Одномерный массив: отсортировать так, чтобы вначале шли положительные элементы, а затем - отрицательные
C++ Упорядочить массив так, чтобы элементы, которые равны 0, становились после всех остальных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vet
 Аватар для vet
175 / 175 / 13
Регистрация: 08.04.2009
Сообщений: 1,309
15.12.2011, 16:07     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза #2
по возрастанию отсортируй пузырьком

Алгоритмы сортировок
Azu
0 / 0 / 0
Регистрация: 15.12.2011
Сообщений: 4
15.12.2011, 23:04  [ТС]     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза #3
Цитата Сообщение от vet Посмотреть сообщение
по возрастанию отсортируй пузырьком
спасибо, что пытаешься помочь, но отсортировать по возрастанию будет не всегда верно, если например данным массивом будет например 12199.
mrak12
Сообщений: n/a
15.12.2011, 23:34     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза #4
Цитата Сообщение от Azu Посмотреть сообщение
спасибо, что пытаешься помочь, но отсортировать по возрастанию будет не всегда верно, если например данным массивом будет например 12199.
Так и получится 11299. Пузырек всегда робит
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
15.12.2011, 23:53     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза #5
Цитата Сообщение от mrak12 Посмотреть сообщение
Так и получится 11299. Пузырек всегда робит
Полагаю, что должно получиться не 11299, а 11992
Azu
0 / 0 / 0
Регистрация: 15.12.2011
Сообщений: 4
16.12.2011, 00:21  [ТС]     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза #6
Цитата Сообщение от soon Посмотреть сообщение
Полагаю, что должно получиться не 11299, а 11992
Да, именно.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
16.12.2011, 01:55     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Важно, как будут располагаться остальные элементы?
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
#include <iostream>
#include <vector>
#include <iterator>
#include <cstdlib>
#include <algorithm>
 
template <class T> void function(T begin, T end)
{
    for(T i = begin, pos = begin; i != end - 1; ++i)
        for(T j = i + 1; (j != end) && (pos != end); ++j)
            if(*i == *j)
            {
                std::swap(*pos++, *i);
                std::swap(*pos++, *j);
            }
}
 
int gen() { return rand() % 11; };
                
int main()
{
    srand(time(NULL));
    std::vector<int> vec(10);
    std::generate(vec.begin(), vec.end(), gen);
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    function(vec.begin(), vec.end());
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2011, 05:58     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза
Еще ссылки по теме:

C++ Удалить из файла все слова, встречающиеся более одного раза
Удалить из списка элементы с повторяющимися более одного раза значениями C++
C++ Сформировать массив,так чтобы элементы заштрихованной области были равны 1,а остальные 0
C++ Выбрать все элементы массива встречающиеся более одного раза
C++ Преобразовать массив так, чтобы сначала располагались все элементы, отличающиеся от максимального не более 20%

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

Или воспользуйтесь поиском по форуму:
Azu
0 / 0 / 0
Регистрация: 15.12.2011
Сообщений: 4
16.12.2011, 05:58  [ТС]     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза #8
Цитата Сообщение от soon Посмотреть сообщение
Важно, как будут располагаться остальные элементы?
Нет.
Спасибо за вариант.
Yandex
Объявления
16.12.2011, 05:58     Упорядочить массив так, чтобы вначале были элементы встречающиеся более одного раза
Ответ Создать тему
Опции темы

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