0 / 0 / 0
Регистрация: 26.03.2018
Сообщений: 15
1

Упорядочить первую половину заданного массива по возрастанию, а вторую – по убыванию

02.04.2018, 08:23. Показов 4440. Ответов 2
Метки нет (Все метки)

Массив содержит четное количество элементов. Напишите программу, которая сортирует первую половину массива по возрастанию, а вторую – по убыванию. Каждый элемент должен остаться в «своей» половине.
Пример:
Массив:
5 3 4 2 1 6 3 2
После сортировки:
2 3 4 5 6 3 2 1

си++ простым языком обьясните и напишите пжлста
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2018, 08:23
Ответы с готовыми решениями:

Отсортировать по возрастанию первую половину массива, и по убыванию вторую половину массива
Напишите программу, которая сортирует по возрастанию первую половину массива и по убыванию вторую...

Отсортировать первую половину массива по возрастанию, а вторую по убыванию
Дан массив из четного числа элементов. Отсортировать первую половину этого массива по возрастанию,...

Отсортировать первую половину массива по возрастанию, а вторую по убыванию
Программа не работает, помогите найти ошибку #include <cstdlib> #include <iostream> using...

Функция сортирующая первую половину массива по убыванию, а вторую - по возрастанию
Написать функцию, которая сортирует первую половину массива по убыванию, а вторую - по возрастанию,...

2
2477 / 1904 / 951
Регистрация: 21.12.2010
Сообщений: 3,473
Записей в блоге: 10
02.04.2018, 08:42 2
Лучший ответ Сообщение было отмечено Ванесса Фулиш как решение

Решение

сортировка в два потока
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <functional>
#include <algorithm>
#include <thread>
 
 
int main()
{
    int arr[]{ 5, 3, 4, 2, 1, 61, 3, 2, };
    int siz = sizeof(arr) / sizeof(*arr); // число элементов в массиве
    std::thread t1(std::sort<decltype(arr)>, arr, arr + siz / 2); // поток сортировки первой половины
    std::thread t2(std::sort<decltype(arr), std::greater<decltype(*arr)>>, arr + siz / 2, arr + siz, std::greater<decltype(*arr)>()); // второй половины
    t1.join();
    t2.join();
    for (auto const val : arr) // вывод массива
    {
        std::cout << val << "  ";
    }
}
1
"C with Classes"
1581 / 1360 / 511
Регистрация: 16.08.2014
Сообщений: 5,647
Записей в блоге: 1
02.04.2018, 08:57 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
#include <cstddef>
#include <algorithm>
 
// Предикат для сортировки первой половины
template<typename T>
bool P1(const T& l, const T& r)
{
    return l < r;
}
 
// Предикат для сортировки второй половины
template<typename T>
bool P2(const T& l, const T& r)
{
    return l > r;
}
 
int main()
{
    int a[] {5, 3, 4, 2, 1, 6, 3, 2};
    
    // Вычислить размер массива
    std::size_t size = sizeof(a) / sizeof(int);
    /*
        a            - начало массива
        a + size / 2 - середина массива
        a + size     - конец массива
    */
    std::sort(a, a + size / 2, P1<int>);
    std::sort(a + size / 2, a + size, P2<int>);
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2018, 08:57
Помогаю со студенческими работами здесь

Упорядочить первую половину массива по убыванию, а вторую половину – по возрастанию
Массив содержит 14 действительных чисел. Упорядочить первую половину массива по убыванию, а вторую...

Первую половину массива упорядочить по возрастанию, вторую - по убыванию
Создайте массив, состоящий из 20 различных целых чисел. После этого 10 первых упорядочить по...

Первую половину элементов массива упорядочить по убыванию, а вторую – по возрастанию
Из произвольного одномерного массива действительных чисел сформировать массив, в котором первую...

Массив из 14 чисел, упорядочить первую половину по убыванию, вторую по возрастанию
Дан массив из 14 вещ. чисел, упорядочить первую половину по убыванию, а вторую по возрастанию....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru