Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2011, 19h13   #1
Membre habitué
 
Avatar de joreveur
 
Homme
Développeur informatique
Inscription : janvier 2010
Messages : 142
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : janvier 2010
Messages : 142
Points : 127
Points : 127
Par défaut Tri bulle non pertinent

Bonjour
je voulais faire un tri bulle (ne pas passer par la fonction intégrée .sort des Array)
je me heurte à ce que le tri ne se fais pas comme je voudrais
Code :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
<html>
<head>
<title>Tri bulle</title>
</head>
 
<h2> tri bulle sur age</h2>
<script language="javascript">
 
var iAge= new Array();
var sNom = new Array();
 
iAge[0]="2 ans";
sNom[0]="Jacques";
 
iAge[1]="1 an";
sNom[1]="Tom";
 
iAge[2]="6 ans";
sNom[2]="Claude";
 
iAge[3]="10 ans";
sNom[3]="Cloé";
 
iAge[4]="11 ans";
sNom[4]="Léo";
 
iAge[5]="9 ans";
sNom[5]="Lucas";
 
for (var i=0;i<=iAge.length-1;i++){
	for (var j=0;j<=i;j++){
		if (iAge[i]<iAge[j]){
			var t=iAge[i];
			iAge[i]=iAge[j];
			iAge[j]=t;
 
		 	t=sNom[i];
			sNom[i]=sNom[j];
			sNom[j]=t;
		}
	}
}
 
document.write('<table border="1"><tr><th>Prenom</th><th>Age</th></tr>');	
for (i=0;i<=iAge.length-1;i++){
	document.write('<tr><td>'+sNom[i]+'</td><td>'+iAge[i]+'</td></tr>');	
}
document.write('</table><hr>');	
 
</script>
</body>
</html>
et voila le résultat peu probant.
Citation:
Prenom Age
Tom 1 an
Cloé 10 ans
Léo 11 ans
Jacques 2 ans
Claude 6 ans
Lucas 9 ans
Je pense que la solution est simple mais je ne la trouve pas...

merci de vos conseils.
joreveur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 19h44   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 806
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 806
Points : 35 803
Points : 35 803
Les entrées de ton tableau sont des chaînes de caractères, donc la comparaison se fait selon les caractères et dans ce cas, "1" est inférieur à "2" quel que soit le caractère suivant.
Utilise parseInt() pour pouvoir trier les valeurs numériques.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 20h05   #3
Membre habitué
 
Avatar de joreveur
 
Homme
Développeur informatique
Inscription : janvier 2010
Messages : 142
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : janvier 2010
Messages : 142
Points : 127
Points : 127
Un grand Merci... c'était simple en fait ...


ça fonctionne très bien j'ai rajouté des nombre décimaux,

mais si je rajoute des cas sans nombre, que des chaînes ça ne va plus....
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Prenom	Age
Tom	1 an
Jacques	2 ans
Antoine	3,50 ans
Pierre	3,8 ans
Claude	6 ans
Lucas	9 ans
Pierre	ans
Antoine	zZZ
Antoine	bZZ
Cloé	10 ans
Léo	11 ans
joreveur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h10.


 
 
 
 
Partenaires

Hébergement Web