首頁 >後端開發 >C++ >奇偶排序(磚塊排序)的C/C++程序

奇偶排序(磚塊排序)的C/C++程序

WBOY
WBOY轉載
2023-09-14 17:53:021393瀏覽

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

以上是奇偶排序(磚塊排序)的C/C++程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除