Les differents tri en c

Fermé
pascal - 22 nov. 2007 à 17:49
 abdelaziz - 5 janv. 2008 à 23:17
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;




}
}

3 réponses

mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
22 nov. 2007 à 22:22
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
SINA.L Messages postés 34 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 30 décembre 2007 2
22 nov. 2007 à 22:54
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
slt, j'adresse à mes amies de m'aider à trouver des programmes des differents tri. et merci.
0