实现冒泡排序的并行算法的 C++ 代码
时间: 2023-08-30 19:06:49 浏览: 99
以下是使用 OpenMP 实现的并行冒泡排序的 C++ 代码示例:
```c++
#include <iostream>
#include <omp.h>
using namespace std;
void bubbleSort(int arr[], int n) {
#pragma omp parallel
{
#pragma omp for
for(int i=0; i<n-1; i++) {
bool swapped = false;
#pragma omp for
for(int j=0; j<n-i-1; j++) {
if(arr[j] > arr[j+1]) {
swap(arr[j], arr[j+1]);
swapped = true;
}
}
if(!swapped) break;
}
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
cout << "Sorted array: ";
for(int i=0; i<n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
在上面的代码中,我们使用了 OpenMP 的 `#pragma omp parallel` 指令来并行执行冒泡排序算法。在 `#pragma omp parallel` 指令中,我们使用了 `#pragma omp for` 指令来并行迭代数组中的元素。我们使用了一个额外的变量 `swapped` 来跟踪在一次迭代中是否进行了交换操作。如果没有进行任何交换操作,则表示数组已经排好序了,可以退出循环。
阅读全文