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

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

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

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

09.05.2016, 07:28. Просмотров 355. Ответов 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
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++
Написать программу которая реализует метод сортировки &quot;пузырьком&quot;. Сгенерировать три массива 100, 1.000 и 10.000 элементов типа integer...

Как возможно реализовать алгоритм сортировки "выбором" для строк матрицы? - C++
Допустим мне дана динамическая матрица размерностью n на m, и надо отсортировать строки между собой по сумме их элементов. вот такую...

Реализуйте шаблонный алгоритм "быстрой сортировки" - C++
Реализуйте шаблонный алгоритм &quot;быстрой сортировки&quot;: template&lt;class It, class Cmp&gt; void qsort(It beg, It end, Cmp cmp); Заранее...

Алгоритм "нестандартной" сортировки масива - C++
Задачка вот в чем: Пользователь вводит число N. Нужно вывести на экран все комбинации чисел от 1 до N в алфавитном порядке. Тоесть,...

Сортировка "пузырьком" массива структур по заданному полю - C++
Нужно отсортировать структуру по фамилии доктора, но что то он не сортирует. void sortDoc(Doctor doctor) { int size; ...

Сортировка одномерного массива методом обмена ("пузырьком") - C++
Имеется одномерный массив размерностью n, заполняемый генератором случайных чисел. Результат выводится на экран в 5 столбцов. Нужно...

Переделать рекурсивную сортировку "пузырьком" на итеративную - C++
Нужно код переделать сортировку Пузырьком переделать рекурсувную на сортировку циклами. { if(i&lt;=0) return; ...

Упорядочивание "пузырьком" массивов, вводимых пользователем - C++
Всем доброго времени суток. Недавно перешел с Pascal на С++. Все нервы убил на этот C++, делаю задание: 10 массивов, которые вводит...

Сортировка массива по возрастанию "пузырьком" - C++
Отсортировать массив по возрастанию методом &quot;пузырька&quot;.

Исследование сортировки метода "пузырек" для большого массива - C++
Нужно реализовать сортировку большого массива методом &quot;пузырек&quot; (для 100, 1.000 и 10.000 элементов). Должен присутствовать ввод...

Нужно доделать код! Исключить из дерева сортировки число "2" - C++
// аисд7.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; /***********...

Ошибка сортировки "error C3861: merge: идентификатор не найден" - C++
Есть алгоритм сортировки слиянием void MergeSort(vector&lt;int&gt; &amp;buf, size_t l, size_t r) { if (l &gt;= r) return; size_t m = (l +...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Сообщений: 132
09.05.2016, 10:53  [ТС]     Распараллелить алгоритм сортировки "пузырьком" #3
Это параллельная обработка?
Unknownx
Заблокирован
09.05.2016, 11:00     Распараллелить алгоритм сортировки "пузырьком" #4
Цитата Сообщение от Bubbles Посмотреть сообщение
Это параллельная обработка?
- а как ты думаешь?std::thread ни о чём не говорит?
Programmist5
-33 / 11 / 2
Регистрация: 07.05.2016
Сообщений: 91
09.05.2016, 11:07     Распараллелить алгоритм сортировки "пузырьком" #5
А как вообще можно реализовать метод Пузырька параллельно, ведь он же должен выполняться последовательно?
Unknownx
Заблокирован
09.05.2016, 11:16     Распараллелить алгоритм сортировки "пузырьком" #6
Цитата Сообщение от Programmist5 Посмотреть сообщение
А как вообще можно реализовать метод Пузырька параллельно, ведь он же должен выполняться последовательно?
- вон выше показано как - создаётся size потоков по числу строк матрицы, все они синхронизированы поэтому пойдут по порядку(каждый сортировать свой участок массива), т.к объём данных мал то сортировка будет происходить где то за время пока цикл инкрементирует счётчик и проверяет условие продолжения, поэтому всё без проблем отрабатывает.
Yandex
Объявления
09.05.2016, 11:16     Распараллелить алгоритм сортировки "пузырьком"
Ответ Создать тему
Опции темы

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