Heim  >  Artikel  >  Backend-Entwicklung  >  C/C++-Programm zur Paritätssortierung (Brick-Sortierung)

C/C++-Programm zur Paritätssortierung (Brick-Sortierung)

WBOY
WBOYnach vorne
2023-09-14 17:53:021325Durchsuche

C/C++-Programm zur Paritätssortierung (Brick-Sortierung)

Der Paritätssortierungsalgorithmus wird auch Brick-Sortierung genannt, eine Sortiertechnologie ähnlich der Blasensortierung. Diese Sortiertechnik ist in zwei Phasen unterteilt: die ungerade Phase und die gerade Phase, die in jeder Iteration gleichzeitig ausgeführt werden, bis alle Elemente sortiert sind.

Die ungerade Phase dieser Programmiertechnik ähnelt der Blasensortierung, sortiert jedoch nur Elemente mit ungeraden Indizes.

Ebenso sortiert die gerade Phasenur Elemente mit geraden Indizes.

Um dieses Konzept klarer zu veranschaulichen, nehmen wir ein Beispiel:

Input: a[]={3,5,7,6,1,4,2}
Output: 1 2 3 4 5 6 7

Erläuterung

Die gerade-ungerade Sortierung, auch Brick-Sortierung genannt, ist eine einfache Sortiertechnik, die auf Parallelverarbeitung ausgelegt ist. Es verwendet Vergleiche, um seine Elemente zu sortieren. Für alle ungerade-gerade-Paare werden Alters- und Elementvergleiche durchgeführt. Wenn ein Paar in der falschen Reihenfolge ist, tauschen Sie die Reihenfolge aus, um es richtig zu machen. Dieser Vorgang wird fortgesetzt, bis die Liste sortiert ist. Da es für die Parallelverarbeitung entwickelt wurde, kann es einen Wert pro Prozessor verarbeiten und beide Prozesse führen gleichzeitig Operationen vom Typ Swap-Compare aus. Dieser Algorithmus wurde ursprünglich für solche Prozessoren vorgeschlagen und erwies sich auf solchen Prozessoren als effizient.

Beispiel

#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;
         }
      }
   }
}

Ausgabe

1234567

Das obige ist der detaillierte Inhalt vonC/C++-Programm zur Paritätssortierung (Brick-Sortierung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen