Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
3 / 3 / 5
Регистрация: 10.11.2008
Сообщений: 43

Сортировка массива

06.09.2012, 22:20. Показов 693. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан массив, элементы которого равны либо 1 либо 2. Отсортировать таким образом, чтобы за каждой единицей следовала двойка, причём если таких элементов больше, они выписывались в конец.

Например (2,1,1,1,2,1).

Должно получится 1,2,1,2,1,1.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.09.2012, 22:20
Ответы с готовыми решениями:

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным элементом. Немогу понять как устоновить...

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

Сортировка массива: перенести положительные числа в начало, а отрицательные - в конец массива
Дан вещественный массив A(N). Отсортировать его таким образом, чтобы все положительные числа находились в начале, а отрицательные - в конце...

8
 Аватар для soundtrack
42 / 42 / 12
Регистрация: 15.12.2011
Сообщений: 131
06.09.2012, 22:45
Как-то так
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
#include <iostream>
using namespace std;
 
void main()
{
    int *mas, N, odin=0, dva=0;
    cout<<"Vvedite razmer massiva: _\b";
    cin >> N;
    mas = new int[N];
    cout<<"Zapolnite massiv (1 ili 2): _\b";
    for(int i=0; i<N; i++)
    {
        cin>>mas[i];
        if(mas[i]==1) odin++;
        else dva++;
    }
    int razn;
    if(odin>dva) 
    {
        razn = odin-dva;
        for(int i=N-1; i>=N-razn; i--)
        {
            mas[i]=1;
        }
        for(int i=0; i<N-razn; i++)
        {
            if(i%2>0) mas[i]=2; else mas[i]=1;
        }
    }
    else
    {
        razn = dva-odin;
        for(int i=N-1; i>=N-razn; i--)
        {
            mas[i]=2;
        }
        for(int i=0; i<N-razn; i++)
        {
            if(i%2>0) mas[i]=2; else mas[i]=1;
        }
    }
    cout<<"Novi massiv:\t";
    for(int i=0; i<N; i++) cout<<mas[i]<<" ";
    delete []mas;
    system("pause");
}
Миниатюры
Сортировка массива  
1
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
06.09.2012, 23:17
soundtrack, здесь алгоритм намного проще:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <time.h>
using namespace std;
 
int main(void)
{ 
 srand(time(NULL));
 const int n=10;
 int a[10],i,j;   
 for (i=1; i<n; i++)
  {
   a[i]=rand()%2+1;
   cout<<a[i]<<" ";
  }
  cout<<endl;
   for (i=1; i<n; i++)
    for (j=i; j<n; j++)
     if ((a[i]%2==0 && i%2!=0) || (a[i]%2!=0 && i%2==0))
      swap(a[i],a[j]);
   for (i=1; i<n; i++)
    cout<<a[i]<<" ";
 cin.get();
}
1
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
06.09.2012, 23:22
Здесь алгоритм еще проще. 2 переменных счетчика. в одной количество 1, в другой количество 2. берем минимум из них как границу циула, а в цикле заносим 1 и 2. затем дописываем остаток
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
06.09.2012, 23:28
I.M., не совсем понятно. Например, взяли a=1 и b=2, так? Берем минимум из них - это a=1. И...что дальше?

Добавлено через 56 секунд
Или имеется в виду количество двоек и единиц? А это не дольше по работе?
0
 Аватар для soundtrack
42 / 42 / 12
Регистрация: 15.12.2011
Сообщений: 131
06.09.2012, 23:31
I.M., ты рассказал ровно то, что я реализовал в своём коде
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
06.09.2012, 23:39
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int count[2] = {0, 0};
for(int i = 0; i!=data_size; ++i)
{
   count[data[i]-1]++;
}
int pair_count = std::min(count[0], count[1]);
for(int i = 0; i<pair_count; ++i)
{
   output.push_back(1);
   output.push_back(2);
}
for(int i = pair_count+1; i<=count[0]; ++i)
{
   output.push_back(1);
}
for(int i = pair_count+1; i<=count[1]; ++i)
{
   output.push_back(2);
}
прошу прощения, не вчитывался в код из второго поста
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
06.09.2012, 23:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void strangeSort ( int *arrayPtr, const std::size_t size ) {
   bool tmp = false;
   std::size_t one = 0,
               two = 0,
               pos = 0;
   
   for ( std::size_t i = 0; i < size; i++ )
      arrayPtr[ i ] == 1 ? one++ : two++;
   
   for ( ; one && two; pos += 2 ) {
      arrayPtr[ pos ] = 1;
      arrayPtr[ pos + 1 ] = 2;
      
      one--;
      two--;
   }
   
   tmp = two > 0;
   
   for ( ; pos < size; pos++)
      arrayPtr[ pos ] = tmp + 1;
}
0
3 / 3 / 5
Регистрация: 10.11.2008
Сообщений: 43
07.09.2012, 20:05  [ТС]
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.09.2012, 20:05
Помогаю со студенческими работами здесь

Сортировка массива по сумме цифр элементов массива в порядке возрастания(неубывания)
Мне нужно написать программу, которая будет сортировать заданный массив по сумме цифр его элементов в порядке неубывания(возрастания). Я то...

Сортировка массива. Ошибка после ввода размерности массива
подскажите почему после ввода размерности массива выдает ошибку #include&lt;iostream&gt; #include&lt;cstdlib&gt; #include&lt;conio&gt; ...

Сортировка массива структур через сортировку массива указателей
Ошибка возникает в функции void sort(student **ppStud, int k, char ch). Кто видит ошибку - помогите, пожалуйста. Код программы: ...

Сортировка массива, вместо массива выводит мусор
Здравствуйте Уважаемые жители форума! Есть рабочий код сортируем массив выбором поиск наименьшего значения, но почему выводит какой то...

Указатели массива и сортировка массива
Доброго времени суток, вот бьюсь над проблемой, нужна программа которая б сортировку динамического массива (ввод с клавиатуры) из 10...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru