c++实现并行冒泡排序算法
时间: 2023-08-11 19:07:50 浏览: 173
以下是使用 C++ 实现的并行冒泡排序算法的代码:
```cpp
#include <iostream>
#include <thread>
#include <vector>
using namespace std;
void bubble_sort_parallel(int arr[], int n) {
// 遍历所有数组元素
for (int i = 0; i < n; i++) {
// Last i elements are already sorted
vector<thread> threads;
for (int j = 0; j < n-i-1; j += 2) {
// 并行比较相邻的两个元素
threads.emplace_back([arr, j](){
if (arr[j] > arr[j+1]) {
swap(arr[j], arr[j+1]);
}
});
}
// 等待所有并行任务完成
for (auto& t : threads) {
t.join();
}
}
}
// Example usage:
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
bubble_sort_parallel(arr, n);
cout << "排序后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
在这个并行化冒泡排序算法中,我们使用 `std::thread` 来创建一个线程,每个线程比较相邻的两个元素。在每一轮循环中,我们创建一组线程并行进行比较,并等待所有线程完成。这个并行化算法可以显著减少排序时间,特别是在需要排序的数组元素数量很大时。注意,在使用 `std::thread` 时需要小心避免线程安全问题。
阅读全文