IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Le tri par insertion


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut Le tri par insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <stdio.h>
     
    void TriInsertion(int *T, int n){
    	int k, i, v;
    	for( k = 1; k < n; k++)
    	{
    		v = T[k];
    		i = k - 1;
    	/* on décale les éléments pour l'insertion */
    		while(( i>= 0) && ( v <T[k]))
    		{
    		T[i+1] = T[i];
    		i--;
    		}
    	/* insertion */
    	T[i+1] = v;
    	}
    }
     
    /* programme test */
     
    int main(void){
    	int tab[]={ 5, 6, 1, 10, 9, 3, 7, 2, 4, 8};
    	int i;
    	for(i = 0; i < 10; i++)
    		printf("%d ", tab[i]);
    	printf("\n");
    		TriInsertion(tab, 10);
    	for(i = 0; i < 10; i++){
     
    		printf("%d ", tab[i]);
    	}
    	printf("\n");
    	return 0;
    }
    Je ne comprends par pourquoi le programme ne fonctionne pas.
    Pourtant j'ai l'algo de la procedure sous les yeux je n'avais plus qu'à la transcrire.
    peut-on m'aider à trouver ce qu'il ne va pas dans ce code?

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		v = T[k];
    		i = k - 1;
    	/* on décale les éléments pour l'insertion */
    		while(( i>= 0) && ( v <T[k]))
    On n'entre jamais dans le while puisque v == T[k]

  3. #3
    Membre éclairé Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Par défaut
    En effet, merci pour l'indice !
    Comme cela ca marche mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <stdio.h>
     
    static void TriInsertion(int *T, int n){
    	int k, i, v;
    	for( k = 1; k < n; k++)
    	{
    		v = T[k];
    		i = k - 1;
    	/* on décale les éléments pour l'insertion */
    		while(( i>= 0) && ( v <T[i]))
    		{
    		T[i+1] = T[i];
    		i--;
    		}
    	/* insertion */
    	T[i+1] = v;
    	}
    }
     
    /* programme test */
     
    int main(void){
    	int tab[]={ 5, 6, 1, 10, 9, 3, 7, 2, 4, 8};
    	int i;
    	for(i = 0; i < 10; i++)
    		printf("%d ", tab[i]);
    	printf("\n");
    	TriInsertion(tab,10);
    	for(i = 0; i < 10; i++){
     
    		printf("%d ", tab[i]);
    	}
    	printf("\n");
    	return 0;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin d'aide pour le tri par insertion.
    Par argon dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 18/05/2006, 11h15
  2. tri par insertion et Structures
    Par bonjour69 dans le forum C
    Réponses: 2
    Dernier message: 23/12/2005, 12h46
  3. [LG] Le tri par insertion d'un enregistrement
    Par phoebee dans le forum Langage
    Réponses: 4
    Dernier message: 01/09/2005, 20h38
  4. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo