Tri itératif

Trier un tableau d'entiers

#include <stdio.h>
#include <stdlib.h>

void tri( int t[], int n)
//un tableau et le nombre d'éléments de ce tableau
{
int temp, k1, k2;
for (k1=0;k1<n;k1++)
for (k2=0;k2<n;k2++) //nous modifierons k2=0; en K2=k1+1;
if (t[k1]<t[k2])
{
temp=t[k1];
t[k1]=t[k2];
t[k2]=temp;
}
}

 

Modularité

Nous pouvons découper le programme de tri en sous-fonctions:

  • Comparer deux éléments.
  • Permuter deux éléments.

Comparer deux entiers

int compare(int x, int y)
{ return x-y ; }

Valeurs retournées:

  • <0 si x<y
  • 0   si x=y
  • >0 si x>y

Permuter deux entiers

Permutation par les pointeurs (langage C)

void permute(int *x, int *y)
{
int w ;
w=*x;
*x=*y;
*y=w;
}

Permutation par référence (langage C++)

void permute(int &x, int &y)
{
int w ;
w=x;
x=y;
y=w;
}

Sniplets pour trier un tableau

Trier un tableau en C

void tri( int t[], int n)
{
int p, temp, k1, k2;
for (k1=0;k1<n;k1++)
{
p=k1;
for (K2=k1+1;k2<n;k2++)
if ( compare(t[k1],t[k2]) >0 ) {p=k2;}
permute(&t[k1], &t[k2]);
}
}

Trier un tableau en C++

void tri( int t[], int n)
{
int p, temp, k1, k2;
for (k1=0;k1<n;k1++)
{
p=k1;
for (K2=k1+1;k2<n;k2++)
if ( compare(t[k1],t[k2]) >0 ) {p=k2;}
permute(t[k1], t[k2]);
}
}

 

Document créé le 12/03/03 01:00, dernière modification le 23/03/18 10:27
Source du document imprimé : https://www.gaudry.be/c-trier-tableau.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.