奇偶排序(砖排序)的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

以上是 奇偶排序(砖排序)的C / C ++程序? 的全部内容, 来源链接: utcz.com/z/353417.html

回到顶部