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

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

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

Author24 — интернет-сервис помощи студентам
Дан одномерный массив, заполненный положительными и отрицательными числами в произвольном порядке. Отсортировать данный массив таким образом, чтобы все положительные числа находились в начале, а все отрицательные - в конце массива и был сохранен первоначальный порядок следования элементов в обоих группах. Дополнительный массив не использовать!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2015, 16:06
Ответы с готовыми решениями:

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

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

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

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

4
Неэпический
18100 / 10686 / 2061
Регистрация: 27.09.2012
Сообщений: 26,899
Записей в блоге: 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
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
11.08.2015, 08:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2015, 08:42
Помогаю со студенческими работами здесь

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

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

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

Заменить сортировку массива на сортировку ссылками
Код работает. Необходимо заменить в M_F_3 сортировку по массиву на сортировку через ссылки. ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru