Tri par insertion - assez urgent
davy2006
-
Froulik Messages postés 3779 Date d'inscription Statut Membre Dernière intervention -
Froulik Messages postés 3779 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bonjour
J'ai un algorithme à faire, c'est un peu urgent, c'est le tri par insertion. Je l'ai fait, mais il est super long, et mon prof me dit que c'est bien plus simple, c'est, je crois, quelque chose qui ressemble à ce qui a été posté ici plus haut, mais je ne comprends pas. Je poste l'énoncé
Tri par insertion : écrivez un programme qui demande à l'utilisateur de saisir une série de nombres entiers positifs ou négatifs. A chaque saisie, on insère la nouvelle valeur au bon endroit dans un tableau déclaré auparavant de manière à ce que le contenu de ce dernier soit toujours trié. La saisie s'arrête lorsque le tableau est rempli.
Principe : à chaque lecture d'un nouveau nombre, on parcourt les valeurs qui se trouvent déjà dans le tableau concerné jusqu'à trouver une valeur plus grande ou jusqu'à atteindre la fin de la liste des nombres déjà traités. Dès que l'on a trouvé une place, on décale toutes les valeurs nécessaires de manière à libérer l'emplacement et y insérer la nouvelle valeur. Le tableau continue ainsi à être ordonné.
Moi, je vois ceci
http://algo.developpez.com/sources/?page=tri#tri_insertion
Entrée :
Sélectionnez
T : tableau de nombre indexé de 1 à n
Sortie :
Sélectionnez
T trié
Pseudo-Code :
Fonction principale :
Sélectionnez
POUR i de 2 à n FAIRE
INSERE( T , i-1, T[i] )
FIN POUR
Fonction INSERE(T, k , val )
Sélectionnez
i <- k
TANT QUE i > 0 et T[i] > val
T[i+1] <- T[i]
i <- i - 1
FIN TANT QUE
T[i+1] <- val
Je ne comprends pas. Je suis en 1ière bach info, et on voit le métalangage
J'ai besoin de l'algorithme suivant
Programme_tri_par_insertion
Variables
tab : Tableau (80) de nombre
i, j,val : nombre
Début
Afficher "Entrez une valeur"
Saisir tab[0]
Afficher "Entrez une valeur"
Si (val >= tab [0]) alors
tab[1] <-- val
Sinon
tab[1] <-- tab[0]
tab[0] <-- val
FinSi
Pour i <-- 2 à 79
Afficher "Entrez une valeur"
Tri_insertion(tab, i)
Fin Pour
Pour i <-- 0 à 79
Afficher tab[i]
Fin Pour
Fin
Procédure Tri_insertion (tab2 : Tableau [80] de nombre, j : nombre)
***
***
***
***
Fin Procédure
Merci de m'aider à faire mon tri par insertion.
Un tout grand merci, encore merci. C'est assez urgent, merci beaucoup.
Davy
Bonjour
J'ai un algorithme à faire, c'est un peu urgent, c'est le tri par insertion. Je l'ai fait, mais il est super long, et mon prof me dit que c'est bien plus simple, c'est, je crois, quelque chose qui ressemble à ce qui a été posté ici plus haut, mais je ne comprends pas. Je poste l'énoncé
Tri par insertion : écrivez un programme qui demande à l'utilisateur de saisir une série de nombres entiers positifs ou négatifs. A chaque saisie, on insère la nouvelle valeur au bon endroit dans un tableau déclaré auparavant de manière à ce que le contenu de ce dernier soit toujours trié. La saisie s'arrête lorsque le tableau est rempli.
Principe : à chaque lecture d'un nouveau nombre, on parcourt les valeurs qui se trouvent déjà dans le tableau concerné jusqu'à trouver une valeur plus grande ou jusqu'à atteindre la fin de la liste des nombres déjà traités. Dès que l'on a trouvé une place, on décale toutes les valeurs nécessaires de manière à libérer l'emplacement et y insérer la nouvelle valeur. Le tableau continue ainsi à être ordonné.
Moi, je vois ceci
http://algo.developpez.com/sources/?page=tri#tri_insertion
Entrée :
Sélectionnez
T : tableau de nombre indexé de 1 à n
Sortie :
Sélectionnez
T trié
Pseudo-Code :
Fonction principale :
Sélectionnez
POUR i de 2 à n FAIRE
INSERE( T , i-1, T[i] )
FIN POUR
Fonction INSERE(T, k , val )
Sélectionnez
i <- k
TANT QUE i > 0 et T[i] > val
T[i+1] <- T[i]
i <- i - 1
FIN TANT QUE
T[i+1] <- val
Je ne comprends pas. Je suis en 1ière bach info, et on voit le métalangage
J'ai besoin de l'algorithme suivant
Programme_tri_par_insertion
Variables
tab : Tableau (80) de nombre
i, j,val : nombre
Début
Afficher "Entrez une valeur"
Saisir tab[0]
Afficher "Entrez une valeur"
Si (val >= tab [0]) alors
tab[1] <-- val
Sinon
tab[1] <-- tab[0]
tab[0] <-- val
FinSi
Pour i <-- 2 à 79
Afficher "Entrez une valeur"
Tri_insertion(tab, i)
Fin Pour
Pour i <-- 0 à 79
Afficher tab[i]
Fin Pour
Fin
Procédure Tri_insertion (tab2 : Tableau [80] de nombre, j : nombre)
***
***
***
***
Fin Procédure
Merci de m'aider à faire mon tri par insertion.
Un tout grand merci, encore merci. C'est assez urgent, merci beaucoup.
Davy
A voir également:
- Tri par insertion - assez urgent
- Excel trier par ordre croissant chiffre - Guide
- Logiciel tri photo - Guide
- Insertion sommaire word - Guide
- Touche insertion clavier - Guide
- Insertion filigrane word - Guide
7 réponses
Désolé, j'ai oublié de préciser ce qui allait à la place des étoiles.
Voici mon algo en java.
import java.util.*;
public class testttest {
public static void main(String[] args) {
Scanner lectureclavier=new Scanner(System.in);
int taille, i, j, val;
System.out.println("Entrez la taille du tableau");
do{
taille=lectureclavier.nextInt();
}while(taille<1);
int tab [];
tab = new int [taille];
System.out.println("Entrez une valeur");
tab[0]=lectureclavier.nextInt();
System.out.println("Entrez une valeur");
val=lectureclavier.nextInt();
if(val >= tab[0]){
tab[1]=val;
}else
{
tab[1]=tab[0];
tab[0]=val;
}
for(i=2;i<taille;i++)
{
System.out.println("Entrez une valeur");
val=lectureclavier.nextInt();
tri_insertion(tab,i,taille,val);
}
for(j=0;j<taille;j++)
{
System.out.print(" "+tab[j]);
}
}
public static void tri_insertion(int tab2 [], int h,int taille2,int val2){
int j;
j=h;
while((j>0) && tab2[j]>val2){
tab2[h+1]=tab2[j];
j--;
}
tab2[j+1]=val2;
}
}
merci à ceux qui voudront bien m'aider
Davy
Voici mon algo en java.
import java.util.*;
public class testttest {
public static void main(String[] args) {
Scanner lectureclavier=new Scanner(System.in);
int taille, i, j, val;
System.out.println("Entrez la taille du tableau");
do{
taille=lectureclavier.nextInt();
}while(taille<1);
int tab [];
tab = new int [taille];
System.out.println("Entrez une valeur");
tab[0]=lectureclavier.nextInt();
System.out.println("Entrez une valeur");
val=lectureclavier.nextInt();
if(val >= tab[0]){
tab[1]=val;
}else
{
tab[1]=tab[0];
tab[0]=val;
}
for(i=2;i<taille;i++)
{
System.out.println("Entrez une valeur");
val=lectureclavier.nextInt();
tri_insertion(tab,i,taille,val);
}
for(j=0;j<taille;j++)
{
System.out.print(" "+tab[j]);
}
}
public static void tri_insertion(int tab2 [], int h,int taille2,int val2){
int j;
j=h;
while((j>0) && tab2[j]>val2){
tab2[h+1]=tab2[j];
j--;
}
tab2[j+1]=val2;
}
}
merci à ceux qui voudront bien m'aider
Davy
Désolé mais CCM ne peut pas répondre favorablement à ta demande.
Regarde ici :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Polux31 te l'a déjà dit, pourtant !
Regarde ici :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Polux31 te l'a déjà dit, pourtant !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eh bin... tu attends que quelqu'un passe par ici et veuille bien te donner un coup de main.
bonne chance :o)
bonne chance :o)
merci quand même, je crois avoir trouvé la solution (en regardant mieux l'algo)
il faut mettre ceci dans la procédure
int i=k;
while((i>=0) && (tab2[i]>val2)){
tab2[i+1]=tab2[i];
i--;
}
tab2[i+1]=val2;
j'ai eu du mal à décortiquer le "bazar", lol, j'ai pas tout-à-fait appris la même chose.
Normalement ça fonctionne, je poste le code complet pour celui que ça intéresse ou si vous trouvez une erreur. j'espère que c'est pas interdit par le forum, si quelqu'un veut corriger, je ne demande pas mieux
import java.util.*;
public class testttest {
public static void main(String[] args) {
Scanner lectureclavier=new Scanner(System.in);
int taille, i, j, val;
System.out.println("Entrez la taille du tableau");
do{
taille=lectureclavier.nextInt();
}while(taille<1);
int tab [];
tab = new int [taille];
System.out.println("Entrez une valeur");
tab[0]=lectureclavier.nextInt();
System.out.println("Entrez une valeur");
val=lectureclavier.nextInt();
if(val >= tab[0]){
tab[1]=val;
}else
{
tab[1]=tab[0];
tab[0]=val;
}
for(i=2;i<taille;i++)
{
System.out.println("Entrez une valeur");
val=lectureclavier.nextInt();
tri_insertion(tab,i-1,taille,val);
}
for(j=0;j<taille;j++)
{
System.out.print(" "+tab[j]);
}
}
public static void tri_insertion(int tab2 [], int k,int taille2,int val2){
int i=k;
while((i>=0) && (tab2[i]>val2)){
tab2[i+1]=tab2[i];
i--;
}
tab2[i+1]=val2;
}
}
il faut mettre ceci dans la procédure
int i=k;
while((i>=0) && (tab2[i]>val2)){
tab2[i+1]=tab2[i];
i--;
}
tab2[i+1]=val2;
j'ai eu du mal à décortiquer le "bazar", lol, j'ai pas tout-à-fait appris la même chose.
Normalement ça fonctionne, je poste le code complet pour celui que ça intéresse ou si vous trouvez une erreur. j'espère que c'est pas interdit par le forum, si quelqu'un veut corriger, je ne demande pas mieux
import java.util.*;
public class testttest {
public static void main(String[] args) {
Scanner lectureclavier=new Scanner(System.in);
int taille, i, j, val;
System.out.println("Entrez la taille du tableau");
do{
taille=lectureclavier.nextInt();
}while(taille<1);
int tab [];
tab = new int [taille];
System.out.println("Entrez une valeur");
tab[0]=lectureclavier.nextInt();
System.out.println("Entrez une valeur");
val=lectureclavier.nextInt();
if(val >= tab[0]){
tab[1]=val;
}else
{
tab[1]=tab[0];
tab[0]=val;
}
for(i=2;i<taille;i++)
{
System.out.println("Entrez une valeur");
val=lectureclavier.nextInt();
tri_insertion(tab,i-1,taille,val);
}
for(j=0;j<taille;j++)
{
System.out.print(" "+tab[j]);
}
}
public static void tri_insertion(int tab2 [], int k,int taille2,int val2){
int i=k;
while((i>=0) && (tab2[i]>val2)){
tab2[i+1]=tab2[i];
i--;
}
tab2[i+1]=val2;
}
}