CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[AIDE]Tri compteur en java

NGC-GAMER
NGC-GAMER
Niveau 10
20 janvier 2011 à 18:10:39

Salut j'aurais besoin d'aide pour réaliser un programme qui effectuerait un tri par comptage ( à l'aide d'un compteur) en java, pourriez-vous m'indiquez la marche à suivre ?

P.S: voici mon programme actuel :

public static void triCompteur(double tab [])
{
int i, j, compt=0;
double tmp;
for(i=0; i<tab.length; i++)
{
for(j=0; j<tab.length; j++)
{
if(j<i)
{
compt++;
}
else{break;}
}
tmp=tab[0];
tab[0]=tab[compt=0];
tab[compt=0]=tmp;
System.out.print(tab[i]+" ");
}
System.out.println(" ");
}

Si vousvoulez le reste de mon programme faites le moi savoir, je ne vous montre là qu'un seule des tri que j'ai à faire.
Le tableau a été déclaré au préalable dans la fonction main et c'est à l'utilisateur dans choisir les valeurs.

Merci!

godrik
godrik
Niveau 30
20 janvier 2011 à 18:22:15

J'ai pas compris quel est l'algo

NGC-GAMER
NGC-GAMER
Niveau 10
20 janvier 2011 à 19:51:19

Se serait pour trier un tableau en utilisant le tri par compteur, si c'est mon code que tu ne comprends pas il est peut être faux!

godrik
godrik
Niveau 30
20 janvier 2011 à 19:56:34

non, c'est le tri par compteur que je ne comprends pas

Bunyan
Bunyan
Niveau 17
20 janvier 2011 à 21:10:46

Je pense qu'il parle du "tri comptage" => http://fr.wikipedia.org/wiki/Tri_comptage
Mais au vu de la discussion de l'article (en résumé : "c'est le bon nom ?")... je crois que le plus simple, se serait que tu nous décrives l'algo de ton tri NGC-GAMER.

NGC-GAMER
NGC-GAMER
Niveau 10
21 janvier 2011 à 20:22:34

Bonjour, pardonnez mes périodes d'absence mais je suis en pleine révision de partiel pour mon DUT. Je vous poste mon code dans quelques instants!

NGC-GAMER
NGC-GAMER
Niveau 10
23 janvier 2011 à 12:49:34

Et voila le code complet, il est très long et il y a plusieurs tri:

import java.io.*;
class Ex1 {
public static void main(String[] args)
{

System.out.println("Entrez la taille du tableau");
System.out.println("");
int taille;
taille=lire();
double [] tab= new double [taille];
System.out.println("Saisissez les valeurs du tableau");
saisieTableau(tab);
afficheTableau(tab);
System.out.println(" ");
boolean continuer = true;
int choix;
while(continuer)
{
afficherMenu();
choix=lire();
switch(choix)
{
case 1:
//triMax(tab);
break;
case 2:
triSeq(tab);
break;
case 3:
//triCompteur(tab);
break;
case 4:
triBul(tab);
break;
case 5:
//triFusion(tab);
break;
case 6:
//rechercheDicho(tab,val);
break;
case 7:
continuer=false;
break;
default:
System.out.println("Valeur non possible");
}
}
}
public static void afficherMenu()
{
System.out.println("1: Tri par recherche du maximum");
System.out.println("2: Tri par insertion sequentielle");
System.out.println("3: Tri par compteur");
System.out.println("4: Tri a bulle");
System.out.println("5: Tri par fusion");
System.out.println("6: Recherche par dichotomie");
System.out.println("7: Quitter");
}
/*
public static void rechercheDicho(double tab[], double val)
{

}

public static void triFusion()
{

}
*/
public static void triMax(double tab[])
{
int i, maximum;
double tmp;
int j=tab.length;
while(j>0)
{
maximum = 0;
for(i=1; i<tab.length; i++)
{
if(tab[i]>tab[maximum])
{
tmp=maximum;
maximum=tab[i];
tab[i]=tmp;
}
j--;
}
}
}

public static void triSeq(double tab[])
{
int i, j;
double tmp;
for(i=0;i<tab.length;i++)
{
j=tab.length-1;
while(j>0)
{
if(tab[j]<tab[j-1])
{
tmp=tab[j];
tab[j]=tab[j-1];
tab[j-1]=tmp;
}
else{
j--;}

}
System.out.print(tab[i]+" ");
}
System.out.println(" ");
}
/*
public static void triCompteur(double tab [])
{
int i,s=0,k;
int taille=tab.length;
int nb [] = new int [taille];
int res [] = new int [taille];
for(i=0;i<taille;i++)
{
for(i=0;i<taille;i++)
{
for(k=0;k<taille;k++)
{
if(tab[i]>tab[k])
{
s++;
}
nb[i]=s;
}
res[nb[i]]=tab[i];
s=0;
}
System.out.println("***tableau est trie***\n");
for(i=0;i<taille;i++)
{
System.out.println(res[i]+"");
}
}
}
*/
public static void triBul(double tab [])
{
int i, j;
double tmp;
for(i=0;i<tab.length;i++)
{
for(j=tab.length-1;j>=i+1;j--)
{
if(tab[j]<tab[j-1])
{
tmp=tab[j];
tab[j]=tab[j-1];
tab[j-1]=tmp;
}
}
System.out.print(tab[i]+" ");
}
System.out.println(" ");
}

public static void saisieTableau(double[] tab)
{
int i=0;
while(i<tab.length)
{
tab[i]=lire();
i++;
}
}

public static void afficheTableau(double[] tab)
{
for(int i=0; i<tab.length; i++)
{
System.out.print(tab[i]+" ");
}
System.out.println(" ");
}

public static int lire()
{
String chaine = new String();
System.out.print("Entrez une valeur :");
chaine = lireClavier();
System.out.println();
return (new Integer(chaine).intValue());
}
public static String lireClavier()
{
byte[] lu=new byte[50];
try { System.in.read(lu,0,50); }
catch (IOException e) { System.out.print("Erreur dans la saisie"); }
String s = new String(lu,0,50);
return s.trim();
}
}

P.S. La fonction lire() n'est pas de moi.

jenaipasdenom
jenaipasdenom
Niveau 15
23 janvier 2011 à 13:15:48

Tient ,marrant ,j'ai exactement le même exercice à faire pour mardi :o))

NGC-GAMER
NGC-GAMER
Niveau 10
23 janvier 2011 à 13:19:48

T'es a St LO ?

jenaipasdenom
jenaipasdenom
Niveau 15
23 janvier 2011 à 13:20:20

Ah bah ouais ,on doit être dans la même promo :o))

NGC-GAMER
NGC-GAMER
Niveau 10
23 janvier 2011 à 13:22:21

Ba ouai c meme sur. J'adore les profs qui nous file des trucs trop durs a faire et qui nous aides pas !

jenaipasdenom
jenaipasdenom
Niveau 15
23 janvier 2011 à 13:27:48

Bah ,faut aussi qu'on apprenne à nous débrouiller par nous même dans un sens.

NGC-GAMER
NGC-GAMER
Niveau 10
23 janvier 2011 à 13:35:31

Ouai mais sa reste hyper dure et je sais pas si t'as vu mais il y'a quelque tri du TD qui sont faux. Et dans le cours il n'y a pas d'exemples codes affiliés au exemples de tris. Alors apprendre par nous même dans ces conditions me parait difficile. Mais on ne va pas se plaindre vue que les profs sont quand même vachement compétents!

jenaipasdenom
jenaipasdenom
Niveau 15
23 janvier 2011 à 13:42:21

Bah personnellement ,j'ai recherché les algorithmes détaillés pour comprendre les méthodes. Par contre ,y a justement un tri qui me dérange ,c'est le tri compteur. Dans le TP ,on nous demande de saisir un tableaux de réels que l'on triera avec plusieurs méthodes. Or ,tous les endroits où j'ai cherché ,il est dit que ce tri par compteur est adapté pour trier des entiers et pas pour autre chose. D'ailleurs ,c'est le tri qu'on avait à effectuer derrière ces histoires de compression/décompression au partiel la semaine dernière. Là pour le coup ,je vois pas trop ce qu'on nous demande :/

NGC-GAMER
NGC-GAMER
Niveau 10
23 janvier 2011 à 13:44:40

Ouai pareil, j'ai essayer de le faire mais j'ai pas réussi.

chris_27
chris_27
Niveau 10
23 janvier 2011 à 16:58:18

« Et dans le cours il n'y a pas d'exemples codes affiliés au exemples de tris. » :d) tu prends n'importe quel bouquin abordant l'algorithmique niveau licence et tu fouilles dedans. Ce n'est pas dur de trouver des exemples de tris.

Au pire, tu as aussi wikipedia, mais attention, il y a sûrement des des fautes dedans.

godrik
godrik
Niveau 30
24 janvier 2011 à 00:33:28

Votre examem est passe, mais je vais quand meme essaye de lever les incomprehension.

Le tri compteur qui est presente dans le premier code repose sur l'idee suivante:
-pour chaque entre du tableau i
-compter combien d'entre j sont avant moi.
-si il y a K valeur plus petite que tableau[i] alors la ieme entree du tableau sera a la position K une fois trie.

Si toutes les entrees du tableau sont differentes, l'implementation est relativement simple a faire. Si plusieurs entree sont egales, il faut faire attention quand on decide si i est avant j: si tableau[i]> tableau[j] alors j est avant i. Si tableau[i] < tableau[j] alors j est apres i. si tableau[i]=tableau[j], alors il faut une regle pour prendre la decision, par exemple i<j alors i est avant j.

Ce tri peu etre applique a tous les types pourvu que l'on dispose d'un moyen de comparer tableau[i] et tableau[j].

Il existe un tri qui porte un nom similaire. Souvent appele le tri par comptage. Celui ci ne fonctionne que sur des entiers. L'idee ici est de compter combien de fois chaque entier apparait dans le tableau. Si tous les entiers sont compris entre 0 et N, on cree le tableau compt de N+1 entiers. Et on fait en sorte que compt[i] soit le nombre de fois que l'entier i apparait dans le tableau. Une fois ce tableau rempli, on peut facilement obtenir le tableau original trie en suivant le principe suivant: les compt[0] premieres valeures sont 0, les compt[1] suivante sont 1, les compt[2] suivantes sont 2...

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment