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

avec Java Discussion :

Tri par insertion


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut Tri par insertion
    Bonjour,

    Mon programme ne trie pas (par insertion). Voilà mon code :
    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
     
    int i;
    	     int temp=0;
    	     for(i=0;i<nb;i++)	
    		 {
    	    	System.out.print("Entrez les éléments:"+(i+1)+" = ");
    	    	tab[i]=sc.nextInt();
     
    	    	int posmaxi=i;
    			for(int j=i+1;j<nb;j++)
    			{
    				if(tab[j]<tab[posmaxi])
    				{
    					posmaxi=j;	
    				}
    				temp=tab[posmaxi];
    				tab[posmaxi]=tab[i];
    				tab[i]=temp;
     
    			}
    		 }
    			System.out.println(tab[i]);
    		}
    	}
    output de mon programe:
    Entrez taille de tableau soit <10 :4
    Entrez les éléments:1 = 5
    Entrez les éléments:2 = 2
    Entrez les éléments:3 = 3
    Entrez les éléments:4 = 7
    0

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    Ah oui tiens, c'est vrai, il ne trie pas. C'est un bon moyen de faire un code qui ne trie pas, encore que le mieux est encore de ne rien faire du tout.



    ...

    Et sinon, tu voulais dire quelque chose ?

    Si par le plus grand des hasards, tu te demandes pourquoi ça ne trie pas, je te suggère de commencer par nous expliquer comment ce code réalise un tri par insertion. Parce que bon, apparemment ce n'est pas la bonne manière.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Après, je dirais qu'il y a des manières très simples de trier des liste d'entiers, mais peut-être que le but du jeu est justement de créer le programme qui réalise lui-même ce tri.


    Parce que Collections.sort, c'est un peu de la triche...

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Pour être sûr qu'on parle bien de la même chose je me permet d'ajouter le lien vers la page Wikipédia : Tri par insertion

    Cordialement,
    Patrick Kolodziejczyk.

    PS: Troll du vendredi soir :
    Après pas comme si ça existait pas déjà sur http://rosettacode.org
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    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
    for(i=0;i<nb;i++)	
    		 {
    	    	System.out.print("Entrez les éléments:"+(i+1)+" = ");
    	    	tab[i]=sc.nextInt();
    	    	int posmaxi=i;
    			for(int j=i+1;j<nb;j++)
    			{
    				if(tab[j]>tab[posmaxi])
    				{
    					posmaxi=j;	
    				}
    				temp=tab[posmaxi];
    				tab[posmaxi]=tab[i];
    				tab[i]=temp;
    				
    			}
    			System.out.println(tab[i]);
    		 }
    Mon programme trie bien, mais je ne sais pas comment le faire s'afficher.

    Avec le même programme, j'écris comme ci-dessous, avec les nombres fixes et il marche bien :

    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
     
    int tab[] = { 4, 7, 8, 6, 4, 3 };
    	    System.out.println("Origine les éléments tableau est : 4,7,8,6,4,3");
    	    for( int i=0; i<tab.length; i++ )
    	    {
    	      int posmaxi=i;
    	      for( int j=i+1; j<tab.length; j++ )
    	      {
    	        if( tab[j] < tab[posmaxi])
    	        {
    	          posmaxi = j;	
    	        }
    	        int temp = tab[posmaxi];
    	        tab[posmaxi] = tab[i];
    	        tab[i]= temp;
    	      }
    	      System.out.println("Trié par l'ordre de croissant position "+ (i+1) + ": " + tab[i]);
    	    }

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Par défaut
    j'ai corrigé certaines de mes erreurs
    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
     
    import java.util.Scanner;
    public class Testing4 
    {
      public static void main(String[] args) 
      {
    	  int tab[]=new int[10];
    	  Scanner sc=new Scanner(System.in);
    	  System.out.print("Entrez taille de tableau soit <10 :");
    	  int nb=sc.nextInt();
     
    	     int i;
    	     int temp=0;
    	     for(i=0;i<nb;i++)	
    		 {
    	    	System.out.print("Entrez les éléments:"+(i+1)+" = ");
    	    	tab[i]=sc.nextInt();
     
    	    	int posmaxi=i;
    			for(int j=i+1;j<nb-1;j++)
    			{
    				if(tab[j]>tab[posmaxi])
    				{
    					posmaxi=j;	
    				}
    				temp=tab[posmaxi];
    				tab[posmaxi]=tab[j];
    				tab[j]=temp;	
    			}
    			System.out.println(tab[i]);
    		 }
    		}
    	}

+ 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