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

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

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

C++ Вывести на экран все слова, встречающиеся более 1 раза
C++ Вывести все элементы массива, встречающиеся более одного раза
Удалить из строки все символы встречающиеся более одного раза C++
Изменить матрицу так, чтобы в строках остались элементы, которые встречаются более одного раза, а другие заменить нулями C++
Изменить заданный числовой массив так, чтобы элементы были расположены в нем в обратном порядке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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

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

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

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