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

Распараллелить алгоритм сортировки "пузырьком" - C++

Восстановить пароль Регистрация
 
Bubbles
1 / 1 / 0
Регистрация: 28.05.2013
Сообщений: 128
09.05.2016, 07:28     Распараллелить алгоритм сортировки "пузырьком" #1
Реализовать параллельную сортировку методом Пузырька
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;
 
int main()
{
    // Считываем размер массива,
    // который необходимо отсортировать
    int size;
    cin >> size;
 
    // Динамически выделяем память под
    // хранение массива размера size
    int *a = new int[size];
   
    // Считываем массив
    for (int i = 0; i < size; i++)
    {
        cin >> a[i];
    }
 
    // Внешний цикл алгоритма совершает
    // ровно size итераций
    for (int i = 0; i < size; i++)
    {
        // Массив просматривается с конца до
        // позиции i и "легкие элементы всплывают"
        for (int j = size - 1; j > i; j--)
        {
            // Если соседние элементы расположены
            // в неправильном порядке, то меняем
            // их местами
            if (a[j] < a[j - 1])
            {
                swap (a[j], a[j - 1]);
            }
        }
    }
 
    // Выводим отсортированный массив
    for (int i = 0; i < size; i++)
    {
        cout << a[i] << ' ';
    }
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2016, 07:28     Распараллелить алгоритм сортировки "пузырьком"
Посмотрите здесь:

Функция для сортировки массива пузырьком C++
Написать функцию сортировки пузырьком массива C++
Ошибка сортировки пузырьком C++
метод сортировки "пузырьком" C++
C++ вывод сортировки пузырьком
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Unknownx
Заблокирован
09.05.2016, 08:22     Распараллелить алгоритм сортировки "пузырьком" #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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <thread>
#include <iostream>
using namespace std;
 
void sort_proc(int * a, int i, int size){
    for (int j = size - 1; j > i; j--)
        {
            // Если соседние элементы расположены
            // в неправильном порядке, то меняем
            // их местами
            if (a[j] < a[j - 1])
            {
                swap (a[j], a[j - 1]);
            }
        }
}
 
int main()
{
    // Считываем размер массива,
    // который необходимо отсортировать
    //int size;
    //cin >> size;
 
    // Динамически выделяем память под
    // хранение массива размера size
    //int *a = new int[size];
 
    // Считываем массив
    //for (int i = 0; i < size; i++)
    //{
    //    cin >> a[i];
    //}
 
    int a[]  = {-3, 9, 2, -6, 7, 28, 15};
    int size = sizeof(a) / sizeof(a[0]);
    thread ** pool = new thread* [size];
    // Внешний цикл алгоритма совершает
    // ровно size итераций
    for (int i = 0; i < size; i++)
    {
        // Массив просматривается с конца до
        // позиции i и "легкие элементы всплывают"
        /*for (int j = size - 1; j > i; j--)
        {
            // Если соседние элементы расположены
            // в неправильном порядке, то меняем
            // их местами
            if (a[j] < a[j - 1])
            {
                swap (a[j], a[j - 1]);
            }
        }*/
        pool[i] = new thread(sort_proc, a, i, size);
        pool[i]->join();
 
    }
 
    // Выводим отсортированный массив
    for (int i = 0; i < size; i++)
    {
        cout << a[i] << ' ';
        delete pool[i];
    }
    delete [] pool;
    return 0;
}
http://ideone.com/es9aQf
-6 -3 2 7 9 15 28
Bubbles
1 / 1 / 0
Регистрация: 28.05.2013
Сообщений: 128
09.05.2016, 10:53  [ТС]     Распараллелить алгоритм сортировки "пузырьком" #3
Это параллельная обработка?
Unknownx
Заблокирован
09.05.2016, 11:00     Распараллелить алгоритм сортировки "пузырьком" #4
Цитата Сообщение от Bubbles Посмотреть сообщение
Это параллельная обработка?
- а как ты думаешь?std::thread ни о чём не говорит?
Programmist5
 Аватар для Programmist5
-33 / 11 / 2
Регистрация: 07.05.2016
Сообщений: 90
09.05.2016, 11:07     Распараллелить алгоритм сортировки "пузырьком" #5
А как вообще можно реализовать метод Пузырька параллельно, ведь он же должен выполняться последовательно?
Unknownx
Заблокирован
09.05.2016, 11:16     Распараллелить алгоритм сортировки "пузырьком" #6
Цитата Сообщение от Programmist5 Посмотреть сообщение
А как вообще можно реализовать метод Пузырька параллельно, ведь он же должен выполняться последовательно?
- вон выше показано как - создаётся size потоков по числу строк матрицы, все они синхронизированы поэтому пойдут по порядку(каждый сортировать свой участок массива), т.к объём данных мал то сортировка будет происходить где то за время пока цикл инкрементирует счётчик и проверяет условие продолжения, поэтому всё без проблем отрабатывает.
Yandex
Объявления
09.05.2016, 11:16     Распараллелить алгоритм сортировки "пузырьком"
Ответ Создать тему
Опции темы

Текущее время: 04:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru