omp计算时间(高精度)
来源:互联网 发布:3dcg制作软件 编辑:程序博客网 时间:2024/06/06 21:43
#include <bits/stdc++.h>#include <omp.h>using namespace std;const int MAX = 1e8;int *data, *temp, N;void merge(int l1, int r1, int r2) { int top = l1, p = l1, q = r1; while (p < r1 || q < r2) { if (q >= r2 || (p < r1 && data[p] <= data[q])) { temp[top++] = data[p++]; } else { temp[top++] = data[q++]; } } for (top = l1; top < r2; top++) { data[top] = temp[top]; }}void merge_sort(int l, int r) { int i, j; for (i = 2; i < r; i *= 2) { #pragma omp parallel for private(j) shared(r, i) for (j = 0; j < r-i; j += i*2) { merge(j, j+i, min(j+i*2, r)); } }}int main(int argc, char *argv[0]) { N = atoi(argv[1]); data = (int*) malloc(sizeof(int)*N); temp = (int*) malloc(sizeof(int)*N); freopen("data.txt", "r", stdin); for (int i = 0; i < N; i++) scanf("%d", data+i); double start = omp_get_wtime();//获得时间 int i; #pragma omp parallel for private(i) shared(N, data) for (i = 0; i < N/2; i++) if (data[i*2] > data[i*2+1]) swap(data[i*2], data[i*2+1]); merge_sort(0, N); double end = omp_get_wtime();//获得时间 for (int i = 0; i < N; i++) printf("%d ",data[i]); printf("\n%f\n", end-start);//两次相减求时间差}
阅读全文
1 0
- omp计算时间(高精度)
- noip1998 高精度计算 (高精度)
- Windows 计算程序运行时间(高精度计时)
- 并行计算omp
- 阶乘计算(高精度)
- N!(高精度计算)
- HDU1002(高精度计算)
- C++实现计算程序运行时间 高精度
- C++实现计算程序运行时间 高精度
- C++实现计算程序运行时间 高精度
- C++高精度实现计算程序运行时间
- C++高精度计算代码运行时间
- C++高精度实现计算程序运行时间
- C++实现计算程序运行时间 高精度
- C++高精度实现计算程序运行时间
- 高精度阶层(高精度计算小试牛刀)
- 高精度计算(附高精度加法程序)
- 高精度计算:梅森数(1)
- Mybatis 向指定表中批量插入数据
- NetworkClient分析
- 使用wireshark常用的过滤命令
- LeetCode-algorithms 49. Group Anagrams
- MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法
- omp计算时间(高精度)
- VLAN介绍
- 华为或者荣耀手机用Android Studio 不能输出logcat问题
- AirMan建设的经验
- MYSQL查询实例
- JDBC简介
- 处理ipv6和内购(IAP)及掉单问题的正确姿势
- JS中如何定义全局变量
- eclipse左边工程列表不见了,怎么调出来