Mon prorgrame de tri par insertion ne termine pas

Résolu
domxaline -  
 domxaline -
Bonjour,
mon prorgrame de tri par insertion ne termine pas
par contre il s'affiche :
Trié par l'ordre de croissant position 5: 0

voilà mon code

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;
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<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]);
}
System.out.println("Trié par l'ordre de croissant position "+(i+1)+": "+tab[i]);
}
}

Output
Entrez taille de tableau soit <10 :4
Entrez les éléments:1 = 8
Entrez les éléments:2 = 5
Entrez les éléments:3 = 6
Entrez les éléments:4 = 7
Trié par l'ordre de croissant position 5: 0



A voir également:

3 réponses

domxaline
 
il n'y a personne pour m'aider!!!
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

"mon prorgrame de tri par insertion ne termine pas"
C'est faux !
Il affiche "Trié par l'ordre de croissant position 5: 0" ce qui est la dernière instruction du programme, donc le fait que tu ais cet affichage prouve que le programme est terminé...

Pour le reste commence par te relire, ce que tu fais n'a pas de sens :

Tu entres une valeur tab[i] du tableau, que tu tries immédiatement avec les valeurs tab[j] qui n'existent pas encore vu que j > i et que tu n'as pas encore rentré ces valeurs là dans le tableau !
0
domxaline
 
j'ai corrigé ce pb, merci beaucoup

Scanner sc = new Scanner(System.in);
System.out.print("**Entrez le nb d'éléments de 1er tableau:** ");
int n = sc.nextInt();
int tab[] = new int [n]; //utilisateur décide lui même nb d'élément à mettre
for ( int i=0; i<n; i++ )
{
System.out.print("Entrez l'élément n°"+(i+1)+"" +" du tableau: ");
tab [i] = sc.nextInt();
}
for ( int i = 0; i<tab.length; i++)
{
int maxi = i;
for ( int j = i+1; j<tab.length; j++ )
{
if ( tab[j] < tab[maxi] )
{
maxi = j;
}
int temp = tab[maxi];
tab[maxi] = tab[i];
tab[i] = temp;
}
System.out.println("Trié les éléments en ordre croissant "+(i+1)+": "+tab[i]);
}
}
}

0