奇偶排序(砖排序)的C / C ++程序?
奇偶剑也称为砖排序是一种类似的排序技术,例如气泡排序。将该分类技术细分为2个阶段,即奇数阶段和偶数阶段。这两个阶段在每次迭代时同时进行,直到对所有元素进行分类为止。
此编程技术的奇数阶段用作冒泡排序,但仅在具有奇数索引的元素上起作用。
同样,偶数阶段仅对具有偶数索引的元素起作用。
为了使这个概念更清楚,让我们举个例子:
Input: a[]={3,5,7,6,1,4,2} Output: 1 2 3 4 5 6 7
说明
奇数排序(也称为砖排序)是一种简单的排序技术,在设计时会考虑并行处理。它使用比较来对元素进行排序。比较会在所有奇数/偶数对及其年龄和元素上进行。如果任何一对的顺序错误,则会切换顺序以使其正确。这个过程一直进行到列表被排序为止。由于它是为并行进程开发的,因此每个处理器可以提供一个令人敬畏的值,并且两个进程在交换比较类型操作上同时工作。该算法最初是提出的,并且在这种处理器上显示出了很高的效率。
示例
#include <stdio.h> #include <math.h> #define MAX 7 void swap(int *,int *); void oddeven_sort(int *); int main() { int a[]={3,5,7,6,1,4,2}, i; oddeven_sort(a); for (i = 0;i < MAX;i++) { printf(" %d", a[i]); } } void swap(int * x, int * y) { int temp; temp = *x; *x = *y; *y = temp; } void oddeven_sort(int * x) { int sort = 0, i; while (!sort) { sort = 1; for (i = 1;i < MAX;i += 2) { if (x[i] > x[i+1]) { swap(&x[i], &x[i+1]); sort = 0; } } for (i = 0;i < MAX - 1;i += 2) { if (x[i] > x[i + 1]) { swap(&x[i], &x[i + 1]); sort = 0; } } } }
输出结果
1234567