奇偶排序(砖头排序)的 C/C++ 程序?


奇偶排序也称为砖头排序,是一种类似于冒泡排序的排序技术。此排序技术细分为两个阶段,奇数阶段和偶数阶段,这两个阶段在每次迭代时同时进行,直到所有元素全部排序。

此编程技术的奇数阶段作为冒泡排序工作,但仅针对具有奇数索引的元素工作。

类似地,偶数阶段仅针对具有偶数索引的元素工作。

为了让这个概念更清晰,我们举例说明一下

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

更新时间:2019-08-19

394 次浏览

开启你的 事业

完成课程取得认证

开始学习
广告