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

Сортировка массива по возрастанию, нули записать в конец

13.02.2018, 14:47. Показов 3328. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу справиться с заданием:
В массиве X(N) каждый элемент равен 0, 1 или 2. Переставить элементы массива так, чтобы сначала располагались все единицы, затем все двойки и, наконец, все нули (дополнительного массива не заводить).
Как его правильно сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2018, 14:47
Ответы с готовыми решениями:

Упорядочить элементы массива по возрастанию, перенеся нули в самый конец
В лабе такое задание , как сделать не приходит в голову С одномерным массивом, состоящим из n вещественных элементов, выполнить...

Сортировка массива: сначала положительные числа по убыванию, потом отрицательные по возрастанию, потом нули
Заполнить массив рандомными числами от -100 включительно до 100 включительно. Отсортировать так: сначала идут положительные числа по...

Заменить повторяющиеся элементы рандомного массива на нули и вывести их в конец массива
Заменить повторяющиеся элементы рандомного массива на нули и вывести полученные нули в конец массива. Не знаю как это сделать, помогите...

12
184 / 192 / 48
Регистрация: 25.08.2011
Сообщений: 792
13.02.2018, 14:54
ищите алгоритмы сортировок на форуме скорее всего сортировку пузырьком

Добавлено через 3 минуты
или
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
 
int main() {
    vector<int> v = { 0, 1, 2, 0, 0, 0, 1, 1, 2, 1, 0 };
    cout << "Before: ";
    copy(v.begin(), v.end(),ostream_iterator<int>(cout," "));
    cout << endl;
    sort(v.begin(), v.end());
    cout << "After: ";
    copy(v.begin(), v.end(),ostream_iterator<int>(cout," "));
    cout << endl;
    return 0;
}
0
0 / 0 / 1
Регистрация: 13.02.2018
Сообщений: 13
13.02.2018, 14:56  [ТС]
Спасибо за код, конечно, но он 0 1 2 делает, что я и так могу.
А вот 1 2 0 у меня никак не получается.
0
Модератор
Эксперт С++
 Аватар для zss
13778 / 10971 / 6491
Регистрация: 18.12.2011
Сообщений: 29,258
13.02.2018, 15:09
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
using namespace std;
 bool ff(int a,int b)
 {
     if(a==0)
         return false;
     if(b==0)
         return true;
     return a<b;
 }
int main() 
{
    int ss[10]={0,2,1,2,0,0,1,1,0,2};
 
    sort(ss,ss+10,ff);
    for(int i=0;i<10;i++)
        cout<<ss[i]<<endl;
    system("pause");
    return 0;
}
0
0 / 0 / 1
Регистрация: 13.02.2018
Сообщений: 13
13.02.2018, 15:14  [ТС]
Благодарю, а через пузырек если сделать, то как?
Это пожалуй единственное, что мне нужно
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
13.02.2018, 15:28
C++
1
2
3
4
5
6
7
8
    int a[]={0,1,2,0,0,0,1,1,2,1,0,0,2,1,2,0,0,1,1,0,2};
    int n=sizeof(a)/sizeof(int);
    for(int i=n-1; i; i--)
        for(int k=0; k<i; k++)
        if(!a[k] && a[i] || a[k]==2 && a[i]==1)
        swap(a[i],a[k]);
    for(int i=0; i<n; i++)
        cout<<a[i]<<" ";
0
0 / 0 / 1
Регистрация: 13.02.2018
Сообщений: 13
13.02.2018, 15:31  [ТС]
О боже, благодарююююююю
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
13.02.2018, 15:35
Цитата Сообщение от HanakoTyan Посмотреть сообщение
а через пузырек
Высылай MansMI, на пузырек, теперь не отвертишься, сам напросился.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    std::vector <int> v  { 0,1,2,0,0,0,1,1,2,1,0,0,2,1,2,0,0,1,1,0,2 };
 
    std::stable_partition(begin(v), end(v), [](const auto x) {return x == 2; });
    std::stable_partition(begin(v), end(v), [](const auto x) {return x == 1; });
 
    for (const auto & el : v) 
        std::cout << el << "   ";
    
    system ("pause");
}
0
 Аватар для John C Reynolds
3 / 3 / 0
Регистрация: 10.02.2018
Сообщений: 11
13.02.2018, 16:02
мановар,
см. условие:
Цитата Сообщение от HanakoTyan Посмотреть сообщение
дополнительного массива не заводить
std::stable_partition выделяет вспомогательный буфер.

Предлагаю такой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    std::vector <int> v  { 0,1,2,0,0,0,1,1,2,1,0,0,2,1,2,0,0,1,1,0,2 };
 
    std::sort(begin(v),
              std::partition(begin(v), end(v), [](const auto x) {return x != 0; }));
 
    for (const auto & el : v) 
        std::cout << el << "   ";
}
0
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
13.02.2018, 16:53
Цитата Сообщение от John C Reynolds Посмотреть сообщение
см. условие:
чего мне его смотреть, я его видел. Не знал что
Цитата Сообщение от John C Reynolds Посмотреть сообщение
std::stable_partition выделяет вспомогательный буфер.
где об этом написано так и не нашел.
0
 Аватар для John C Reynolds
3 / 3 / 0
Регистрация: 10.02.2018
Сообщений: 11
13.02.2018, 17:46
Цитата Сообщение от мановар Посмотреть сообщение
где об этом написано так и не нашел.
Бан в гугле — это не шутки.
1
1719 / 568 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
13.02.2018, 17:56
Цитата Сообщение от John C Reynolds Посмотреть сообщение
Бан в гугле
Тогда все ясно.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
13.02.2018, 19:18
Цитата Сообщение от John C Reynolds Посмотреть сообщение
Бан в гугле — это не шутки.
https://www.cyberforum.ru/cpp-... ment3.html

3.3 Не отсылайте других пользователей в поиск и избегайте ссылок на поисковые системы (Google, Yandex и др.). Самостоятельно найдите ответ на вопрос и разместите его на форуме.

Добавлено через 1 минуту

Не по теме:

John C Reynolds, вот такая тут "диктатура", тебе как "новенькому" сообщил

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2018, 19:18
Помогаю со студенческими работами здесь

Переместить нули в конец массива
Дан массив, нужно переместить нули в конец массива. Нулевые элементы определяются либо 0, либо «0». Некоторые тесты могут включать...

Добавить в конец массива элементы, расположенные между min и max элементами исходного массива, исключая нули
добавить в конец массива элементы, расположенные между минимальными и максимальными элементами исходного массива, исключая нулевые

Переместить все нули в конец массива
. Заполнить одномерный массив числами от 0 до 5. Переместить все нули в конец массива. При решении задачи не использовать дополнительных...

Как нули переместить в конец массива
Вот задание (В одномерном массиве состоящем из n вещественных элементов, вычислить: -максимальный элемент массива; -Сумму элементов...

Переместить в конец двумерного массива все нули
Все нули из введенной с клавиатуры матрицы необходимо переместить в конец. Пытался сделать рекурсией, но так и не откомпилировалось ни...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru