选择排序的MPI实现
#include "stdafx.h"
#include "mpi.h"
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include "stdlib.h"
#define SIZE 2//进程数
/SIZE;//每个进程分配的个数
int shuzu[SIZE][ARRAY_SIZE];
int zonghanshu[SIZE][ARRAY_SIZE];
double endwtime;
double startwtime;
void swap(int *a, int *b);
int main(int argc, char *argv[]){
int myid;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
int numtasks;
srand();
; i < SIZE; i++){
; j < ARRAY_SIZE; j++){
shuzu[i][j] = rand();
}
}
int xiaopaixu[ARRAY_SIZE];
startwtime = MPI_Wtime();
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
if (numtasks == SIZE){
MPI_Scatter(shuzu, ARRAY_SIZE, MPI_INT, xiaopaixu, ARRAY_SIZE, MPI_INT, , MPI_COMM_WORLD);
; i <ARRAY_SIZE; i++){
;j < ARRAY_SIZE ; j++){
if (xiaopaixu[i] > xiaopaixu[j]){
swap(&xiaopaixu[i],&xiaopaixu[j]);
}
}
}
MPI_Gather(xiaopaixu, ARRAY_SIZE, MPI_INT, zonghanshu, ARRAY_SIZE, MPI_INT, , MPI_COMM_WORLD);
int time[SIZE];
; i < SIZE; i++){
time[i] = ;
}
int a[SIZE];
int zongpaixu2[ARRAY_SIZE*SIZE];
; j >= ; j--){
; k < SIZE; k++){
if (time[k] >= ARRAY_SIZE){
a[k] = ;
}
else
{
a[k] = zonghanshu[k][ARRAY_SIZE - time[k] - ];
}
}
];
; i<SIZE; i++){
if (a[i]>x){
x = a[i];
}
}
; n < SIZE; n++){
if (x == a[n]){
time[n] = time[n] + ;
break;
}
}
zongpaixu2[j] = x;
}
endwtime = MPI_Wtime();
if (myid);
else
; i < SIZE*ARRAY_SIZE; i++){
printf("%d ", zongpaixu2[i]);
}
}
if (myid);
else
printf("\ntime=%f\n", endwtime - startwtime);
MPI_Finalize();
}
void swap(int *a, int *b)
{
int c;
c = *a;
*a = *b;
*b = c;
}
选择排序的MPI实现的更多相关文章
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- Html5 简单选择排序演示
简单选择排序,是选择排序算法的一种.基本思想:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止.由于在每次循环中,会对数值相等的元素改变位置,所以属于非稳定 ...
- 排序算法总结------选择排序 ---javascript描述
每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ...
- JavaScript算法(冒泡排序、选择排序与插入排序)
冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...
- 基本排序算法——选择排序java实现
选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ...
- java基础算法之选择排序
选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. ...
- 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现
之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...
- CPrimerPlus第十一章中的“选择排序算法”学习
C Primer Plus第十一章字符串排序程序11.25中,涉及到“选择排序算法”,这也是找工作笔试或面试可能会遇到的题目,下面谈谈自己的理解. 举个例子:对数组num[5]={3,5,2,1,4} ...
- SelectionSort,选择排序
/**算法:选择排序1,从当前未排序的正数中找一个最小的整数,将它放在已排序的整数列表的最后2.要点:选择排序选最小的,往左边选*/ #include <stdio.h>void Sele ...
随机推荐
- 对于观察者模式,Reactor模式,Proactor模式的一点理解
最近就服务器程序IO效率这一块了解一下设计模式中的Reacotr模式和proactor模式,感觉跟观察者模式有些类似的地方,网上也看了一些其他人对三者之间区别的理解,都讲得很仔细,在此根据自己的理解做 ...
- Linux C 程序 指针数组和二级指针(TEN)
指针数组和二级指针 #include<stdio.h> int main(){ ] = {,,,,}; ], i; int **pp = p; //使p指针数组指向每一个a ; i < ...
- syntaxhighlighter语法高亮
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- php获取客户端ip地址
本文介绍一个,php获取客户端的IP地址的实例代码,有需要的朋友参考下吧. 获取客户端IP地址的代码,如下: 复制代码代码示例: <?php//取得客户端IP的函数function get_cl ...
- php入门常量
常量像变量一样,用于临时存储一个值,但是常量在许多方面与变量不同. 常量:1.是在程序执行期间无法改变数据,常量的作用域是全局的.2.常量的命名与与变量相似,只是不带美元符号“$”.一个有效的常量名由 ...
- emoji处理方法汇总
emoji资料 今天研究了emoji,挺有意思,资料挺多,摘要一些信息给大家分享,也算是自己记录学习. emoji介绍 Emoji (絵文字,词义来自日语えもじ,e-moji,moji在日语中的含义是 ...
- Python urllib2 模块学习笔记
2015.3.6 urllib2的使用方法大致如下 # 定制Handler处理函数 opener = urllib2.build_opener(ProxyHandler, HTTPHandler) ...
- 概念:RPG与RPGLE的区别
RPG是OPM编程模式,即RPG编程的代码不能编译成*MODULE:编译只能直接生成一个程序,*PGM. RPGLE是ILE编程模式.OS/400环境下,ILE是集成开发环境.在ILE环境下,所 ...
- Chrome浏览器安装插件提示(net::ERR_NAME_NOT_RESOLVED)
在chrome的webstore中安装currently插件.使用goagentFQ后能正常访问,但出现"net::ERR_NAME_NOT_RESOLVED"错误. 该错误的含义 ...
- Nagios脚本编写事例
目标:编写一个简单的nagios脚本,实现监控client上的nginx进程是否启动,假如没启动的话发出报警. 首先在master上对nagios的配置文件进行设置,修改services.cfg文件, ...