关于 OpenMP 的快速问题:
我不确定如何使用 open MP.As in 并行实现嵌套的双 for 循环,在较大的 for 循环内有两个 for 循环。使用这种循环的算法是“双端选择排序”。
void project::parallelDeSelectionSort()
{
//Printarr(arr,size);
int comparisons = 0;
int j = 0;
int k = 0;
#pragma omp parallel for private (j, k)
for(int i = 0; i < arrSize; i++)
{
int min = i;
int max = ((arrSize-1) - i);
int maxtemp = max;
int mintemp = min;
for(j = min; j < arrSize; j++)
{
if(data[min] > data[j])
{
min = j;
}
comparisons++;
//Printarr(data,arrSize);
}//end for
for(k = max; k > 0; k--)
{
if(data[max] < data[k])
{
max = k;
}
comparisons++;
//Printarr(data,arrSize);
}//end for
if(min > mintemp)
{
swap(data[min], data[mintemp]);
}
comparisons++;
if(max < maxtemp)
{
swap(data[max], data[maxtemp]);
}
comparisons++;
//Printarr(data,arrSize);
}//end outer for
//cout<<GetCounter()<<endl;
cout<<"number of comparisons in parallel DE selection sort: "<< comparisons<<endl;
}
非常感谢所有回答的人。