Maison > développement back-end > C++ > Programme C/C++ pour le tri par parité (tri de briques)

Programme C/C++ pour le tri par parité (tri de briques)

WBOY
Libérer: 2023-09-14 17:53:02
avant
1406 Les gens l'ont consulté

Programme C/C++ pour le tri par parité (tri de briques)

L'algorithme de tri par parité est également appelé tri par briques, qui est une technologie de tri similaire au tri à bulles. Cette technique de tri est divisée en deux phases : la phase impaire et la phase paire, qui sont effectuées simultanément à chaque itération jusqu'à ce que tous les éléments soient triés.

La phase impairede cette technique de programmation est similaire au tri à bulles, mais trie uniquement les éléments avec des indices impairs.

De même, la phase pairene trie que les éléments avec des index pairs.

Pour illustrer ce concept plus clairement, prenons un exemple :

Input: a[]={3,5,7,6,1,4,2}
Output: 1 2 3 4 5 6 7
Copier après la connexion

Explication

Le tri pair-impair, également connu sous le nom de tri par brique, est une technique de tri simple conçue pour un traitement parallèle. Il utilise la comparaison pour trier ses éléments. Des comparaisons sont faites entre les âges et les éléments pour toutes les paires impaires-pairs. Si une paire est dans le mauvais ordre, échangez l’ordre pour qu’il soit correct. Ce processus se poursuit jusqu'à ce que la liste soit triée. Puisqu'il a été développé pour le traitement parallèle, il peut traiter une valeur par processeur et les deux processus effectuent simultanément des opérations de type comparaison d'échange. Cet algorithme a été initialement proposé sur de tels processeurs et s'est avéré efficace sur de tels processeurs.

Exemple

#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;
         }
      }
   }
}
Copier après la connexion

Sortie

1234567
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal