Les differents tri en c

Bonjour,
je bloque sur mon programme qui demande à l'utilisateur une série de 20 chiffres maximum et qui les trie en fonction du tri choisi! je bloque sur les tri surtout pour le tri bulle
quelqu'un aurait la solution à mon problème merci

#include <stdio.h>
#include <stdlib.h>
#define MAX 20
void main (void)

{
int v[MAX],cpt,i,j,limite,tri,n,temp;

printf("entrez la limite de nombre a introduire\t");
scanf("%d",&limite);
for(cpt=0;cpt<limite;cpt++)
{
printf("Introduire le %d e element du vecteur :\t", cpt+1);
scanf("%d",&v[cpt]);
}
cpt=limite;

printf("voici les tris possibles dans ce programme\n\t");

printf("tri par extraction (1)\n\t");
printf("tri par insertion (2)\n\t");
printf("tri bulle (3)\n\t");

do{

printf("choisissez votre tri\n");

scanf("%d",&tri);
printf("numero invalide choississez un tri de 1 a 3\n\t");

}while (( tri < 1) || (tri > 3));

switch( tri )
{

case 1: printf("vous avez choisi le tri par extraction");
n=0;
i=0;
while(i<n)
{
j=i+1;
while(j<= n+1)
{
if(v[i] > v[j])
{
v[i]=v[j];
}
j=j+1;
}
i=i+1;
}
for(i=0;i<10;i++)
{
printf("%d\t",v[i]);
}

break;

case 2: printf(" vous avez choisi le tri par insertion");

i=1;
while(i<10)
{
temp=v[i];
j=i-1;
while(j>=0&&v[j]>temp)
{
v[j+1]=v[j];
j=j-1;
}
v[j+1]=temp;
i++;
}
for(i=0;i<10;i++)
{
printf("%d\t",v[i]);
}

break;
case 3: printf("vous avez choisi le tri bulle");

break;

}
}
Configuration: Windows XP
Firefox 2.0.0.9

3 réponses

  1. voici un tri a bulle pour ton programme( n'oublie pas de declare les variable au debut :int changement=1, tps)

        printf("entre les valeurs : \n");
            for(i=0;i<limite;i++)
        scanf("%d",&v[i]);
    while(changement){
        changement=0;
            for(i=0;i<(limite-1);i++)
                if(v[i]>v[i+1]){
                tps=v[i];
                v[i]=v[i+1];
                v[i+1]=tps;
                changement=1;}
        }
        for(i=0;i<limite;i++)
            printf("%d",v[i]);
    
    1. ce code fai le trie par sélection du maximum

      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int A[50]; /* tableau donné */
      int N; /* dimension */
      int I; /* rang à partir duquel A n'est pas trié */
      int J; /* indice courant */
      int AIDE; /* pour la permutation */
      int PMAX; /* indique la position de l'élément */
      /* maximal à droite de A[I] */

      /* Saisie des données */
      printf("Dimension du tableau (max.50) : ");
      scanf("%d", &N );
      for (J=0; J<N; J++)
      {
      printf("Elément %d : ", J);
      scanf("%d", &A[J]);
      }
      /* Affichage du tableau */
      printf("Tableau donné :\n");
      for (J=0; J<N; J++)
      printf("%d ", A[J]);
      printf("\n");

      /* Tri du tableau par sélection directe du maximum. */
      for (I=0; I<N-1; I++)
      {
      /* Recherche du maximum à droite de A[I] */
      PMAX=I;
      for (J=I+1; J<N; J++)
      if (A[J]>A[PMAX]) PMAX=J;
      /* Echange de A[I] avec le maximum */
      AIDE=A[I];
      A[I]=A[PMAX];
      A[PMAX]=AIDE;
      }

      /* Edition du résultat */
      printf("Tableau trié :\n");
      for (J=0; J<N; J++)
      printf("%d ", A[J]);
      printf("\n");
      return 0;
      }

      et celui la fai le tri par propagation (bubble sort)

      #include <stdio.h>
      main()
      {
      /* Déclarations */
      int A[50]; /* tableau donné */
      int N; /* dimension */
      int I; /* rang à partir duquel A est trié */
      int J; /* indice courant */
      int AIDE; /* pour la permutation */
      int FIN; /* position où la dernière permutation a eu lieu. */
      /* permet de ne pas trier un sous-ensemble déjà trié. */

      /* Saisie des données */
      printf("Dimension du tableau (max.50) : ");
      scanf("%d", &N );
      for (J=0; J<N; J++)
      {
      printf("Elément %d : ", J);
      scanf("%d", &A[J]);
      }
      /* Affichage du tableau */
      printf("Tableau donné :\n");
      for (J=0; J<N; J++)
      printf("%d ", A[J]);
      printf("\n");

      /* Tri du tableau par propagation de l'élément maximal. */
      for (I=N-1 ; I>0 ; I=FIN)
      {
      FIN=0;
      for (J=0; J<I; J++)
      if (A[J]>A[J+1])
      {
      FIN=J;
      AIDE=A[J];
      A[J]=A[J+1];
      A[J+1]=AIDE;
      }
      }

      /* Edition du résultat */
      printf("Tableau trié :\n");
      for (J=0; J<N; J++)
      printf("%d ", A[J]);
      printf("\n");
      return 0;
      }
      1. slt, j'adresse à mes amies de m'aider à trouver des programmes des differents tri. et merci.