奇偶排序,或奇偶换位排序,或砖排序,是一种相对简单的排序算法,最初发明用于有本地互连的并行计算。这是与冒泡排序特点类似的一种比较排序。该算法中,通过比较数组中相邻的(奇-偶)位置数字对,如果该奇偶对是错误的顺序(第一个大于第二个),则交换。下一步重复该操作,但针对所有的(偶-奇)位置数字对。如此交替进行下去。
处理器数组的排序
在并行计算排序中,每个处理器对应处理一个值,并仅有与左右邻居的本地互连。所有处理器可同时与邻居进行比较、交换操作,交替以奇-偶、偶-奇的顺序。该算法由Habermann在1972年最初发表并展现了在并行处理上的效率。
该算法可以有效地延伸到每个处理器拥有多个值的情况。在Baudet–Stevenson奇偶合并分区算法中,每个处理器在每一步对自己所拥有的子数组进行排序,然后与邻居执行合并分区或换位合并。
Batcher奇偶归并排序
Batcher奇偶归并排序是一种相关但更有效率的排序算法,采用比较-交换和完美-洗牌操作。
Batcher的方法在拥有广泛互连的并行计算处理器上效率不错。
算法
以下表现其单处理器算法,类似冒泡排序,较为简单但效率并不特别高。
#include<stdio.h> #include<string.h> #include<math.h> #include<ctype.h> #include<stdbool.h> void swap(int *a, int *b) { int t; t=*a; *a=*b; *b=t; } void printArray(int a[], int count) { int i; for(i=0; i<count; i++) printf("%d ",a[i]); printf("\n"); } void Odd_even_sort(int a[], int size) { bool sorted=false; while(!sorted) { sorted=true; for(int i=1; i<size-1; i+=2) { if(a[i]>a[i+1]) { swap(&a[i],&a[i+1]); sorted=false; } } for(int i=0; i<size-1; i+=2) { if(a[i]>a[i+1]) { swap(&a[i],&a[i+1]); sorted=false; } } } } int main(void) { int a[]={3, 5, 1, 6, 9, 7, 8, 0, 11}; int n=sizeof(a)/sizeof(*a); Odd_even_sort(a,n); printArray(a,n); return 0; }
相关推荐
利用mpi进行奇偶排序的实现,有较好的性能和可扩展性
C语言奇偶排序算法 奇偶排序,或奇偶换位排序,或砖排序,是一种相对简单的排序算法,最初发明用于有本地互连的并行计算。这是与冒泡排序特点类似的一种比较排序。该算法中,通过比较数组中相邻的(奇-偶)位置数字...
主要介绍了java数据结构与算法之奇偶排序算法,较为详细的分析了奇偶算法的原理并结合完整示例形式给出了实现技巧,需要的朋友可以参考下
主要介绍了奇偶排序算法及Java数组的实现,奇偶排序的时间复杂度为O(N^2),需要的朋友可以参考下
=====第2题:奇偶排序(一)===== 总时间限制:1000ms内存限制:65536kB描述输入十个整数,将十个整数按升序排列输出,并且奇数在前,偶数在后。输入输入十个整数输出按照奇偶排序好的十个整数 代码如下:#include #...
MPICH2+VC++6.0开发,内含奇偶并行排序源代码及EXE可运行程序。
最快的排序算法 把Excel里的一列数字按照奇偶数的形式排序出来怎样做才是最好最快的方法,排序算法数据结构
有一个顺序表L,假设元素类型为整型。设计一个算法,将所有奇数移动到偶数的前面。请分析算法的时间复杂度和空间复杂度。
经典的排序算法C#源码...经典排序算法 - 奇偶排序Odd-even sort 经典排序算法 - 梳排序Comb sort 经典排序算法 - 耐心排序Patience Sorting 经典排序算法 - 珠排序Bead Sort 经典排序算法 - 计数排序Counting sort
主要介绍了java交换排序之奇偶排序实现方法,实例分析了奇偶排序的原理与具体实现技巧,非常具有实用价值,需要的朋友可以参考下
设 A[]是由非 0 整数构成的数组,要求设计一个算法重新排列数组 A[]中的数,使得奇数 都排在偶数的前面。要求该算法的时间复杂度为 O(n),空间复杂度为 O(1)。
算法包括冒泡排序算法、鸡尾酒排序算法、插入排序算法和奇偶排序算法。 这些算法接收一个向量并对向量的元素进行排序并将其返回到一个输出向量中。 例如使用冒泡排序算法,您可以执行以下操作: >> A = rand(1,100)...
双向冒泡排序 冒泡排序 桶排序 梳排序 循环排序 地精排序 堆排序 插入排序 归并排序 奇偶排序 鸽笼排序 快速排序 使用冒泡的快排 选择排序 希尔排序 里面含源文件与编译后的文件.每个算法都有效率图.
通过实验任务包括排序算法、三壶谜题、交替放置的碟子、带锁的门等,学生需要设计算法并进行实现,并对算法的时间复杂度进行分析。 在排序算法方面,学生实现了冒泡排序、插入排序、选择排序、希尔排序、快速排序和...
针对传统排序算法计算耗时、实时性差的缺点,提出一种可并行的多层次归并排序算法并在FPGA中实现了其并行计算,同时分析了其周期精确的计算时间。结果表明该归并排序算法可以[O(N)]的时间复杂度完成特征点的排序,...
BatcherJavaScript奇偶合并排序算法。 参见 。 父母是 。 import { whole } from '@aureooms/js-odd-even-mergesort' ; import { list } from '@aureooms/js-itertools' ; import { increasing } from '@aureooms/...
十个数 进行 奇偶排序。 并按大小进行输出,
排序算法可视化工具 ...1.04-添加了奇偶排序 1.03-添加了Gnome排序,更改了GUI大小 1.02-添加梳状排序 1.01-添加了外壳排序 1.00-发布于09/06/20 用法 只需从上面的链接下载应用程序并安装,不需要其他依