MPI实现并行奇偶排序】的更多相关文章

奇偶排序 odd-even-sort, using MPI 代码在 https://github.com/thkkk/odd-even-sort 使用 MPI 实现奇偶排序算法, 并且 MPI 进程 只能向其相邻进程发送消息 nprocs 是进程数. 每个进程拥有独立的一块数据 data[0 ~ block_len-1],组合起来为整个待排序的数组. 方法 每个阶段排序之后不进行check 此前,在每个阶段的奇偶排序进行完之后,都会进行一次进程之间的信息传递,以判断排序是否完成,这个过程要进行约…
typedef long long __int64; #include "mpi.h" #include <cstdio> #include <algorithm> #include <cmath> using namespace std; int Compute_partner(int phase,int my_rank,int comm_sz){//根据趟数的奇偶性以及当前编号的编号得到partner进程的编号 int partner; if(!…
算法说明 奇偶排序又叫奇偶换位排序,砖排序.它是一种交换排序,也是冒泡的一个变种 顾名思义,奇偶排序,其实就是先循环奇数位,然后将奇数位与偶数位比较计算. 然后再循环偶数位,再和奇数位比较运算.看一下代码大家就明白了. 据wiki所述,这种算法是一种并行算法,个人对这块现在不太理解,没明白这块所谓的并行是什么意思,现在只是完成了一个单机版,将来如果明白了再过来进行补充啦. 代码 使用的是java package hark.sort.exchangesort; /* * 奇偶排序 */ publi…
/*===================================== 整数奇偶排序 总时间限制: 1000ms 内存限制: 65536kB 描述 输入10个整数,彼此以空格分隔 重新排序以后输出(也按空格分隔),要求: 1.先输出其中的奇数,并按从大到小排列: 2.然后输出其中的偶数,并按从小到大排列. 输入 任意排序的10个整数(0-100),彼此以空格分隔 输出 按照要求排序后输出,由空格分隔 样例输入 4 7 3 13 11 12 0 47 34 98 样例输出 47 13 11…
奇偶排序法的思路是在数组中重复两趟扫描.第一趟扫描选择所有的数据项对,a[j]和a[j+1],j是奇数(j=1, 3, 5……).如果它们的关键字的值次序颠倒,就交换它们.第二趟扫描对所有的偶数数据项进行同样的操作(j=2, 4,6……).重复进行这样两趟的排序直到数组全部有序. public static void oddEvenSort(int[] arr){ int len = arr.length; int groupNumber = (int) Math.ceil((double)le…
描述: 输入10个整数,彼此以空格分隔重新排序以后输出(也按空格分隔),要求:1.先输出其中的奇数,并按从大到小排列:2.然后输出其中的偶数,并按从小到大排列.输入任意排序的10个整数(0-100),彼此以空格分隔输出按照要求排序后输出,由空格分隔样例输入 4 7 3 13 11 12 0 47 34 98 样例输出 47 13 11 7 3 0 4 12 34 98 提示1. 测试数据可能有很多组,请使用while(cin>>a[0]>>a[1]>>...>&g…
905.按奇偶排序数组 问题描述 给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素. 你可以返回满足此条件的任何数组作为答案. 示例 输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受. 提示: 1 <= A.length <= 5000 0 <= A[i] <= 5000 思路 创建一个新的列表,深度拷贝要转换的数组. 设置两个下标,一个从 0 开始递增…
/*==============================================总时间限制: 1000ms 内存限制: 65536kB描述 输入十个整数,将十个整数按升序排列输出,并且奇数在前,偶数在后.输入 输入十个整数输出 按照奇偶排序好的十个整数样例输入 10 9 8 7 6 5 4 3 2 1样例输出 1 3 5 7 9 2 4 6 8 10提示 先排序,再分别输出奇数.偶数================================================*…
整数奇偶排序 题目出处:<信息学奥赛一本通>第二章上机练习6,略有改编 题目描述 告诉你包含 \(n\) 个数的数组 \(a\) ,你需要把他们按照"奇数排前面,偶数排后面:奇数从从小到大排,偶数从大到小排"的顺序输出. 输入格式 输入的第一行包含一个整数 \(n(1 \le n \le 1000)\). 输入的第二行包含 \(n\) 个整数 \(a_1,a_2,--,a_n\) .表示数组中的 \(n\) 个元素,两两之间用一个空格分隔. 输出格式 输出占一行,按照&qu…
题目链接: 922. 按奇偶排序数组 II 思路 很简单,搞懂问题的核心就行,假设现在有奇数在偶数位上,偶数在奇数位上. 那么我们要做的就是,找到分别在对方位置上的数字,然后交换他们就行. class Solution: def sortArrayByParityII(self, A: List[int]) -> List[int]: # 判断数组大小是否小于等于1,是则直接返回数组 if len(A) <= 1: return A # 定义2个指针,i指向第一个偶数位,j指向第一个奇数位 i…