zoukankan      html  css  js  c++  java
  • 基于 OpenMP 的奇偶排序算法的实现

    代码:

    #include <omp.h>
    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    
    using namespace std;
    
    const int NUM = 8000;
    const int MAX = 1000000;
    const int MIN = 0;
    const int NUM_THREADS = 8;
    
    int arr[NUM];
    
    int main() {
    	cout << "Odd-even transportion sort start..." << endl;
    	cout << "Generate random data... ";
    	memset(arr, 0, NUM * sizeof(arr[0]));
    	srand(time(NULL));
    	omp_set_num_threads(NUM_THREADS);
    #pragma omp parallel for
    	for (int i = 0; i < NUM; i++) {
    		arr[i] = MIN + rand() % (MAX - MIN);
    	}
    	cout << "Done." << endl;
    	cout << "Sorting... ";
    	for (int i = 0; i < NUM; i++) {
    		if (i % 2 == 0) {
    #pragma omp parallel for
    			for (int j = 0; j < NUM - 1; j += 2) {
    				if (arr[j] > arr[j + 1]) {
    					int temp = arr[j];
    					arr[j] = arr[j + 1];
    					arr[j + 1] = temp;
    				}
    			}
    		} else {
    #pragma omp parallel for
    			for (int j = 1; j < NUM - 1; j += 2) {
    				if (arr[j] > arr[j + 1]) {
    					int temp = arr[j];
    					arr[j] = arr[j + 1];
    					arr[j + 1] = temp;
    				}
    			}
    		}
    	}
    	cout << "Done." << endl;
    	cout << "Result:" << endl;
    	int counter = 1;
    	int row = 20;
    	for (int i = 0; i < NUM; i++,counter++) {
    		cout << arr[i] << " ";
    		if (counter % row == 0) cout << endl;
    	}
    }
    

    截图:

  • 相关阅读:
    auto_ptr解析
    C++ auto_ptr智能指针的用法
    C++ 默认构造函数
    phpdisk 盲注 &前台任意用户登录
    冒泡排序
    关于C++中的友元函数的总结
    python中的闭包
    reverse Polish notation
    PostScript
    sqlite
  • 原文地址:https://www.cnblogs.com/justsong/p/12219723.html
Copyright © 2011-2022 走看看