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

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

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

Сортировка одномерного массива - C++

04.10.2012, 23:29. Просмотров 892. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток!
Имеется одномерный массив A(N), состоящий из 0, 1 или 2.
Переставить элементы массива так, чтобы сначала располагались все нули, затем все двойки и, наконец, все единицы (дополнительного массива не заводить).
Решение задачи оформит в виде функции, которая получает в качестве параметров указатель на массив и количество элементов массива.

Надеюсь на вашу помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2012, 23:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка одномерного массива (C++):

Сортировка одномерного массива - C++
Задача: сортировка одномерного массива методом выбора. #include <iostream> using namespace std; int main() { const...

Сортировка одномерного массива - C++
Есть массив {1,2,3,4,5,6,7}, необходимо изменить порядок элементов {7,6,5,4,3,2,1}

Сортировка одномерного массива - C++
Здравствуйте пользователи! Написал программу "Сортировка одномерного массива". #include <iostream> #include <stdlib.h> using...

Сортировка одномерного массива С++ - C++
Доброго времени суток, Возникла дичайшая проблема с задачкой для начинающих ламеров. Эпилог: в школе программирования не было как...

Сортировка одномерного массива - C++
Здраствуйте, нужна помощь,а то в голову нечего не лезит... Есть одномерный массив из чисел . Мне необходимо сортировать их рандомно, что...

Сортировка одномерного массива - C++
Помогите, пожалуйста, разработать приложение сортировки одномерного массива! Может у кого есть рабочая программа или код:) Помогите!!!:(

6
Vourhey
Почетный модератор
6482 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
05.10.2012, 00:03 #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
int a[] = {2,0,1,0,2,2,1,1,2,0,0,0,2,1,1,2,1,0,0,1,1,2,2,2,0,2,2,2,1,1,1,1};
 
void main()
{
    int offset_0 = 0, offset_1 = 0;
    for(int i = 0; i<(31-offset_1); ++i)
    {
        if(a[i] == 0)
        {
            std::swap(a[i], a[offset_0]);
            ++offset_0;
        }
        else if(a[i] == 1)
        {
            std::swap(a[i], a[31 - offset_1]);
            ++offset_1;
            --i;
        }
    }
 
    for(int i = 1; i<32; ++i)
        std::cout<<a[i]<<" ";
}
Что-нибудь похожее на это, например. В Функцию сам запихнешь, если что.
0
arialover
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 3
05.10.2012, 00:18  [ТС] #3
Спасибо!

Добавлено через 6 минут
Рано порадовался)
А для другого набора\количества элементов массива как быть?

Кликните здесь для просмотра всего текста
Цитата Сообщение от Vourhey Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int a[] = {2,0,1,0,2,2,1,1,2,0,0,0,2,1,1,2,1,0,0,1,1,2,2,2,0,2,2,2,1,1,1,1};
 
void main()
{
    int offset_0 = 0, offset_1 = 0;
    for(int i = 0; i<(31-offset_1); ++i)
    {
        if(a[i] == 0)
        {
            std::swap(a[i], a[offset_0]);
            ++offset_0;
        }
        else if(a[i] == 1)
        {
            std::swap(a[i], a[31 - offset_1]);
            ++offset_1;
            --i;
        }
    }
 
    for(int i = 1; i<32; ++i)
        std::cout<<a[i]<<" ";
}
Что-нибудь похожее на это, например. В Функцию сам запихнешь, если что.
0
Vourhey
Почетный модератор
6482 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
05.10.2012, 00:30 #4
Цитата Сообщение от arialover Посмотреть сообщение
А для другого набора\количества элементов массива как быть?
Ну измени код на любое другое количество, в чем проблема-то? Ты вообще что ли ни одного символа напечатать сам не можешь?
0
arialover
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 3
05.10.2012, 00:48  [ТС] #5
Цитата Сообщение от Vourhey Посмотреть сообщение
Ну измени код на любое другое количество, в чем проблема-то? Ты вообще что ли ни одного символа напечатать сам не можешь?
Ты меня не так понял. Я имею в виду возможность заполнения массива поэлементно с клавиатуры.
И задание размерности.

Когда я так делаю, то с твоим кодом получается целая куча чисел

Сортировка одномерного массива
0
co6ak
Кошковед
408 / 501 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
05.10.2012, 01:15 #6
модератор, а не по стандарту ))

лупи динамический массив.
по типу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main() {
    int* mas;
    int elements_number;
    std::cin << elements_number;
    mas = new int [elements_number];
    for ( int i = 0; i < elements_number;) {
         int x;
         std::cin << x;
         if ( x != 0 || x != 1 || x != 2 ) std::cout << "Input error! Only 0,1,2!";
         else { mas[i++] = x; }
    }
    // тут вставь сортировку. любую. хоть пузырек. 
    for(int i = 1; i<elements_number; ++i)
        std::cout<<mas[i]<<" ";
    std::cin.get().get();
    return 0;
}
0
Vourhey
Почетный модератор
6482 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
22.10.2012, 04:03 #7
Цитата Сообщение от co6ak Посмотреть сообщение
модератор, а не по стандарту ))
Пишу, как считаю нужным.

Добавлено через 48 минут
arialover, еще такой вариант могу предложить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int a[] = {2,0,1,0,2,2,1,1,2,0,0,0,2,1,1,2,1,0,0,1,1,2,2,2,0,2,2,2,1,1,1,1};
 
bool mysort(const int& a, const int& b)
{
    if(a==2 && b==1) return true;
    if(a==1 && b==2) return false;
    return a<b;
}
 
void main()
{
     std::sort(a, a+count, mysort);
Добавлено через 30 минут

Не по теме:

Хотя, mysort можно сократить до такого:

C++
1
2
    if(a!=0 && b!=0) return a>b;
    return a<b;

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 04:03
Привет! Вот еще темы с ответами:

Сортировка одномерного массива - C++
Написать программу сортировки массива методом:Камнем, сортировка Шелла, пирамильная сортировка, сортировка слиянием. (массив из случайных...

Сортировка одномерного массива - C++
Люди!!!! Помогите студенту сдать гак. Надо упорядочить одномерный массив из вешественных элементов. Если подкините код, который нано...

Сортировка одномерного массива - C++
Здравствуйте, помогите пожалуйста с написанием кода. Дан одномерный массив. Его надо проверить отсортирован ли он по убыванию, если...

Сортировка одномерного массива - C++
Изначально у нас двумерный массив. Его мы &quot;превращаем&quot; в одномерный. Дальше его нужно отсортировать по определенному закону: &gt;-10 и &lt;10;...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
22.10.2012, 04:03
Ответ Создать тему
Опции темы

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