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

Провести стабильную сортировку массива

10.08.2015, 16:06. Показов 1321. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан одномерный массив, заполненный положительными и отрицательными числами в произвольном порядке. Отсортировать данный массив таким образом, чтобы все положительные числа находились в начале, а все отрицательные - в конце массива и был сохранен первоначальный порядок следования элементов в обоих группах. Дополнительный массив не использовать!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.08.2015, 16:06
Ответы с готовыми решениями:

Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных строках.
Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных...

Как нормально провести сортировку
Двумерная динамическая матрица, необходимо посчитать сумму каждой строки и отсортировать строки по возрастанию в зависимости от суммы: и...

Задача. Заполнить двумерный массив и провести линейную сортировку
Заполнить двумерный массив А размером 7*7 случайными числами в диапазоне от (-23 до 47). Провести линейную сортировку 6 столбца по...

4
Неэпический
 Аватар для Croessmah
18124 / 10709 / 2063
Регистрация: 27.09.2012
Сообщений: 26,998
Записей в блоге: 1
10.08.2015, 16:15 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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <algorithm>
 
bool greater_zero ( int x )
{
    return x < 0 ;
}
 
 
bool equal_zero ( int x )
{
    return x == 0 ;
}
 
 
void out_array ( const int * arr , size_t size )
{
    for ( size_t i = 0 ; i < size ; ++i )
        std::cout << arr[i] << ' ' ;
    std::cout << std::endl ;
}
 
 
int main()
{
    const size_t size = 10 ;
    int arr[size] = { 1 , -9 , 0 , -5 , 5 , 9 , -7 , -1 , 6 , -3 } ;
    out_array( arr , size ) ;
    std::stable_partition 
    ( 
        std::stable_partition
        ( 
            arr , 
            arr+size , 
            greater_zero 
        ) , 
        arr+size , 
        equal_zero 
    ) ;
 
    out_array( arr , size ) ;
}
0
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
10.08.2015, 16:32 3
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
47
#include<iostream>
using std::cout;
using std::endl;
using std::cin;
#include<ctime>
 
int main() {
    setlocale(LC_ALL, "rus");
    //Строим массив
    cout << "Укажите рамер массива - ";
    int n;
    cin >> n;
    short * m = new short[n];
    srand(time(0)); 
    for(int i = 0; i < n; i++) {
        m[i] = rand() % 100-50;
        cout << m[i] << " ";        
    }
    cout << endl;
    
    //Сортировка указанному правилу
    int k = n;
    for(int i = n - 1; i >= 0; i--) 
        if(m[i] < 0) {
            int ii = i;
            for(int j = i + 1; j < n; j++)
                if(m[j] > 0) {
                    short t = m[j];
                    m[j] = m[ii];
                    m[ii] = t;
                    ii = j;
                } else {
                    n = j;
                    j = n;
                }           
        }
    
    //печатаем
    for(int i = 0; i < k; i++)      
        cout << m[i] << " ";
    
    cout << endl;
 
    delete[] m;
    system("pause");
    return 0;
}
0
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
10.08.2015, 17:01 4
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <array>
#include <algorithm>
#include <iterator>
 
int main()
{
    std::array<int, 10> a = { -1, -9, 0, -5, 5, 9, -7, -1, 6, -3 };
    std::copy(a.cbegin(), a.cend(), std::ostream_iterator<int>(std::cout, " ")); std::cout << std::endl;
    for (auto item = a.begin() + 1; item < a.end(); ++item)
        for (auto item2 = item; item2 > a.begin() && *item2 >= 0 && *(item2 - 1) < 0 ; --item2)
            std::swap(*(item2 - 1), *item2);
    std::copy(a.cbegin(), a.cend(), std::ostream_iterator<int>(std::cout, " "));
}
0
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
11.08.2015, 08:42 5
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
#include <iostream>
 
template<typename T, typename Cmp>
T* stable_part(T* f, T* l, Cmp cmp){
    T* p;
    for(p = f; f != l; ++f){
        if(cmp(*f)){
            for(T* i = f; i > p; --i)
                std::swap(*i, *(i - 1));
            ++p;
        }
    }
    return p;
}
 
bool pred(const int& n){ return (n > 0); }
 
int main(void){
    int   arr[] = { 1 , -4, -9, -5, 0 , -5, -77, 5 , 9 , -7 , -1 , 6, -3, 777 } ;
    size_t size = sizeof(arr)/sizeof(arr[0]);
 
    stable_part(arr, arr + size, pred);
    for(size_t i = 0; i < size; ++i)
        std::cout << arr[i] << ' ';
    return 0;
}
Результат работы кода
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2015, 08:42
Помогаю со студенческими работами здесь

Провести сортировку по возрастанию отрицательных чисел в нечетных строках
Условие задачи. Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию отрицательных чисел в нечетных...

Провести сортировку строки матрицы по убыванию пузырьком, обходя строку с конца
Сформировать двумерный массив целых чисел размерности nxm, где n,m&lt;10 – вводятся с клавиатуры, значения элементов массива в диапазоне –...

В квадратной матрице провести сортировку тех строк, в которых на побочной диагонали стоит четное число
программку на С++ В квадратной матрице провести сортировку тех строк в которых на побочной диагонали стоит парное число

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

Заменить сортировку массива на сортировку ссылками
Код работает. Необходимо заменить в M_F_3 сортировку по массиву на сортировку через ссылки. #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Безопасность кластеров Apache Kafka
Javaican 14.03.2025
Apache Kafka стал одним из ключевых компонентов современных архитектур, обрабатывающих потоки данных в режиме реального времени. Его используют тысячи компаний от стартапов до технологических. . .
Контейнеризация ML моделей с помощью Docker и Kubernetes
Mr. Docker 14.03.2025
Перенос ML-моделей из лаборатории в продакшн сопровождается целым комплексом проблем. Нередко код, который отлично работает на локальной машине, отказывается функционировать в промышленной среде. . . .
Организация масштабируемого хранилища с Apache Cassandra
Codd 14.03.2025
Изначально разработанная в Facebook, а затем переданная Apache Software Foundation, Cassandra сочетает в себе принципы Amazon's Dynamo и Google's BigTable. Эта комбинация создает уникальную. . .
Kafka или Pulsar: Что лучше для потоковой обработки в Java
Javaican 14.03.2025
Среди множества решений для потоковой обработки данных Apache Kafka долгое время удерживала лидирующие позиции, став де-факто стандартом в индустрии. Однако в последние годы всё больше внимания. . .
Создание и использование компонентов в Vue 3
Reangularity 14.03.2025
Компонент в Vue - это автономный блок интерфейса, который содержит собственную разметку, логику и стили. Представьте себе кнопку, форму ввода или даже целую панель навигации - всё это можно оформить. . .
Vue 3: Создаем современное веб-приложение с Composition API
Reangularity 14.03.2025
В фронтенд-разработке Vue 3 выделяется своим прагматичным подходом. В отличие от React с его минималистичной философией "всё — JavaScript" или Angular с его всеобъемлющим корпоративным подходом, Vue. . .
Разработка контекстных меню в iOS
mobDevWorks 14.03.2025
С приходом iOS 13 Apple представила новый API для контекстных меню, который полностью заменил предыдущую технологию 3D Touch peek & pop. Хотя многие разработчики и пользователи испытывают ностальгию. . .
Лучшие практики оптимизации Docker Image
Mr. Docker 13.03.2025
Размер Docker-образа влияет на множество аспектов работы с контейнерами. Чем больше образ, тем дольше его загрузка в реестр и выгрузка из него. Для команд разработки, работающих с CI/ CD пайплайнами,. . .
Вопросы на собеседовании по Docker
Mr. Docker 13.03.2025
Ты сидишь напротив технического специалиста, и вдруг звучит вопрос про Docker Swarm или многоэтапные сборки. Пот на лбу? Не переживай, после этой статьи ты будешь готов ко всему! Эта статья будет. . .
Поиск текста в сносках : замена дефиса на тире или тире на дефис...
РоΜа 13.03.2025
Нужно было найти текст в сносках и заменить. Почему-то метод селекшн не сработал. . . пришлось гуглить. найденный на форумвба код пришлось править. Смысл - заменяет в сносках дефисы и тире на нужные. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер