选择排序算法OpenMP并行优化
一 选择排序算法原理
时间复杂度,O(n 2)。 每次从未排序序列中选择最小元素,交换到已排序序列末尾。
二 具体步骤
1)初始状态
已排序区间为空,未排序区间为[0,n-1]。
2)第i次迭代
在未排序区间[i, n-1]中找最小值索引min_idx
交换arr[i]与arr[min_idx]。
3)重复n-1次直到全部有序。
三 C++串行实现
void selectionSort(int arr[], int n) {
for (int i = 0; i < n-1; ++i) {
int min_idx = i;
for (int j = i+1; j < n; ++j) {
if (arr[j] < arr[min_idx])
min_idx = j;
}
std::swap(arr[i], arr[min_idx]);
}
}
四 OpenMP并行优化(重点加速查找最小值阶段)
#include <omp.h>