Witam. Chciałbym zrealizować sortowanie bąbelkowe dla ciągu liczb rzeczywistych z wykorzystaniem OpenMP. Jednak mam problem ze zrównolegleniem. Ponieważ nie zawsze zadziała poprawnie. Czy trzeba tutaj zrównoleglać drugiego fora też?
Mój kod:
#include <stdio.h>
#include "omp.h"
int main()
{
int n=10;
double X[10] = {0.4, -1.7, 2.2, 3.4, 2.2, -8.1, 9.2, -100, 99.01, 9};
int i, j;
double tmp;
int a=0;
omp_set_num_threads(4);
//for(a =0; a<n; a++)
//printf("%.2f ,", X[a]);
//printf("\n");
#pragma omp parallel for default(none) private(i,j,tmp) shared(n, X)
for(i = 0; i< n; i++)
for(j=0; j< (n-1-i); j++)
{
#pragma omp flush(X)
if(X[j]>X[j+1])
{
tmp = X[j+1];
X[j+1] = X[j];
X[j] = tmp;
}
}
for (j = 0; j<n; j++)
printf("%.2f, ", X[j]);
printf("\n");
return 0;
}