Algorithme de tri Bubble JavaScript
S'il vous plaît pouvez-vous me dire quel est le problème de cette mise en œuvre de l'algorithme de tri bubble en JavaScript?
for (var i=1; i<records.length; i++){
for (var j=records.length; j<1; j--){
if (parseInt(records[i-1]) < parseInt(records[i])){
var temp = records[i-1];
records[i-1] = records[i]
records[i] = temp;
}
}
}
- Cela fonctionne mieux si vous dites à nous ce problème est avec elle, et alors nous pourrions être en mesure de dire à votre manière d'y remédier.
Vous devez vous connecter pour publier un commentaire.
Quelques codes pour le tri à bulles
bubblesort ne doit pas être utilisé pour les grands tableaux, peut être utilisée que pour les plus petits pour sa simplicité.
Méthode 1
Méthode 2
Méthode 3
this.dataStore.length
ce que cela signifie ?les codes d'erreurfunction bubbleSort(a) { var swapped, len = a.length; do { swapped = false; for (var i=0; i < len; i++) { if (a[i] > a[i+1]) { var temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; swapped = true; } } len-- } while (swapped); } bubbleSort(a);
Une mise en œuvre simple en JavaScript ES6 sera
Ne pourrait-il pas être
vous devez utiliser j au lieu de i dans la deuxième boucle, et ne pas oublier de changer le j<1 à j>1
if (parseInt(records[i-1]) < parseInt(records[i])){ var temp = records[i-1]; records[i-1] = records[i] records[i] = temp;
que je n'for (var j=records.length-1; j>0; j--)
Je crois que dans le tri à bulles, une fois que le je boucle a terminé une itération, puis la i-ième élément est maintenant dans sa position correcte. Cela signifie que vous devez écrire la boucle j comme
Sinon votre bulle de tri va être (encore plus) inefficace.
la deuxième
for
boucle est codé tort il devrait êtrefor
boucle à l'intérieur d'unwhile
boucle et d'établir un prédicat pour la lecture en boucle. Le code ci-dessus va continuer la boucle et en boucle, jusqu'à ce qu'elle se termine... même une fois les éléments de la liste ont déjà été placés dans l'ordre.Ma solution: