OpenMP之列舉排序

2021-06-25 23:29:01 字數 1021 閱讀 4810

// enumsort.cpp : 定義控制台應用程式的入口點。

//列舉排序

/*列舉排序(enumeration sort)是一種最簡單的排序演算法,通常也稱為秩排序(rank sort)。

該演算法的具體思想是(假設按關鍵字遞增排序),對每乙個待排序的元素統計小於它的所有元素的個數,從而得到該元素最終處於序列中的位置。

假定待排序的n個數存在a[1]…a[n]中。首先將a[1]與a[2]…a[n]比較,記錄比其小的數的個數,令其為k,

a[1]就被存入有序的陣列b[1]…b[n]的b[k+1]位置上;然後將a[2]與a[1],a[3]…a[n]比較,記錄比其小的數的個數,依此類推。

這樣的比較操作共n(n-1)次,所以序列秩排序的時間複雜度為o(n2)。

*/#include "stdafx.h"

#include #include #include #include using namespace std;

#define num_threads 2

#define maxn 100000

int _tmain(int argc, _tchar* argv)

; int b[maxn];

//並行——————————;

for (i=0;ia[j])

}b[k]=a[i];

}*/#pragma omp section

}b[k]=a[i];//另外建立乙個陣列,將其放到第k+1處;

}}#pragma omp section

}b[k]=a[i];

}} }

t2=clock();

for (i=99900;ia[j])

}b[k]=a[i];

} t2=clock();

for (i=99900;i執行結果如下圖:(相對加速比:1.72)

C 之OpenMP並行程式設計 列舉排序

這是自己高新能與雲計算課程的乙個作業 可以看之前那篇visual studio 2017之openmp執行環境配置 列舉排序演算法 是一種最簡單的排序演算法,通常也稱為秩排序 rank sort 該演算法的具體思想是 假設按關鍵字遞增排序 對每乙個待排序的元素統計小於它的所有 元素的個數,從而得到該...

Openmp補遺之同步

指定特殊的儲存單元將被原子地更新,不允許多個執行緒同時執行更新操作。如果不寫,其結果將不可預料。謹之慎之 臨界區宣告方法 pragma omp critical name 表示名字可選 critical與atomic的區別在於,atomic僅適用於上一節規定的兩種型別操作,而且atomic所防護的僅...

openmp之互斥鎖

openmp中有一些同步機制可以避免執行緒競爭問題的發生。可以使用同步機制,使得執行緒只有執行到某個語句,才能繼續執行後面的程式。在程式需要訪問可能產生競爭的記憶體資料的時候,都需要插入相應的臨界區 乙個例子是定積分確定求圓周率pi的值 函式介面只需要確定區間0 1之間的分段數,段數越多,pi的值自...