奇偶排序(磚頭排序)的 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 次瀏覽

開啟你的 事業

完成課程取得認證

開始學習
廣告