Les differents tri en c

pascal -  
 abdelaziz -
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. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    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]);
    
    0
  2. SINA.L Messages postés 34 Statut Membre 2
     
    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;
    }
    0
  3. abdelaziz
     
    slt, j'adresse à mes amies de m'aider à trouver des programmes des differents tri. et merci.
    0