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

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

WBOY
WBOYavant
2023-09-14 17:53:021326parcourir

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

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

Sortie

1234567

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer