Форум программистов, компьютерный форум, киберфорум
Наши страницы

Сортировка с использованием OpenMP - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Двумерный массив (каждый элемент массива разделить на среднее арифметическое этих элементов) http://www.cyberforum.ru/cpp-beginners/thread886290.html
Задан массив действительных чисел А(n). Необходимо каждый элемент массива разделить на среднее арифметическое этих элементов. На печать вывести исх. и преобразов. массивы. Методические указания...
C++ Текст или число в переменной Народ помогите сейчас друг сидит на экзамене по программированию и нужно помочь с программой(быстрому обучению друг не поддается)написать код на коленке в данный момент не могу. задача такая:... http://www.cyberforum.ru/cpp-beginners/thread886289.html
C++ Таймер который запускается по новой через каждые полчаса
Здравствуйте нужно сделать таймер который работает бесконечно и и через каждые полчаса запускался по новой с номиналом пол часа
Сформировать вектор В(к) из a(i,j) < 0 C++
Дан массив A(n,n). Сформировать вектор В(к) из a(i,j) < 0. На печать вывести исходный массив, полученный вектор и его размерность.
C++ Оператор if (для чисел от нуля до пяти программа выводит на экран тексотовое название числа) http://www.cyberforum.ru/cpp-beginners/thread886233.html
Составить программу, которая принимает числа с клавиатуры. Ддя чисел от нуля до пяти программа выводит на экран тексотовое название числа.
C++ Односвязный циклический список! Парни ., срочно помощь нужна , завтра лабу надо сдать , туплю по жесткому)! Список односвязный, нужно сделать циклическим, я так понял одну строчку цыкла и пару печатей, и по идее должно работать... подробнее

Показать сообщение отдельно
razr_

Сортировка с использованием OpenMP - C++

31.05.2013, 14:08. Просмотров 1057. Ответов 1
Метки (Все метки)

Ребят, помогите пожалуйста распараллелить с помощью OpenMP сортировку подсчетом (Counting Sort).

Код последовательной версии:
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
#include <iostream>
#include <time.h>
 
//------------------------------------------------------------------------------
using namespace std;
 
//------------------------------------------------------------------------------
const int MAX = 30;
 
//------------------------------------------------------------------------------
class cSort
{
public:
    void sort( int* arr, int len )
    {
    int mi, mx, z = 0; findMinMax( arr, len, mi, mx );
    int nlen = ( mx - mi ) + 1; int* temp = new int[nlen];
    memset( temp, 0, nlen * sizeof( int ) );
 
    for( int i = 0; i < len; i++ ) temp[arr[i] - mi]++;
 
    for( int i = mi; i <= mx; i++ )
    {
        while( temp[i - mi] )
        {
        arr[z++] = i;
        temp[i - mi]--;
        }
    }
 
    delete [] temp;
    }
 
private:
    void findMinMax( int* arr, int len, int& mi, int& mx )
    {
    mi = INT_MAX; mx = 0;
    for( int i = 0; i < len; i++ )
    {
        if( arr[i] > mx ) mx = arr[i];
        if( arr[i] < mi ) mi = arr[i];
    }
    }
};
//------------------------------------------------------------------------------
int main( int argc, char* argv[] )
{
    srand( time( NULL ) ); int arr[MAX];
    for( int i = 0; i < MAX; i++ )
    arr[i] = rand() % 140 - rand() % 40 + 1;
 
    for( int i = 0; i < MAX; i++ )
    cout << arr[i] << ", ";
    cout << endl << endl;
 
    cSort s; s.sort( arr, MAX );
 
    for( int i = 0; i < MAX; i++ )
    cout << arr[i] << ", ";
    cout << endl << endl;
 
    return system( "pause" );
}
//------------------------------------------------------------------------------
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru