0
votes

Trier un tableau sans la méthode arr.sort (), que se passe-t-il ici?

Je crois avoir compris cela, mais je voulais avoir un aperçu de la façon dont cela fonctionne dans la réalité. J'ai cette fonction ici qui trie les nombres par ordre croissant. Je crois comprendre que les boucles dépassant la longueur du tableau retournent undefined et l'ont initialement écrit comme tel ci-dessous.

Cependant, il semble que le dernier nombre du tableau (6) ne soit pas atteint et la fonction laisse ce nombre derrière. Arr.length - 1 devrait être un index de 5 signifiant que arr [5] est appelé à un moment donné, mais cela ne semble pas être le cas?

Dans la fonction ci-dessous la première, je a sorti arr.length - 1 et mettez simplement arr.length et cela semble fonctionner correctement, mais arr.length = 6 dans ce cas. Je crois comprendre que la liste [6] n'existe pas ou ne serait pas définie dans ce cas, alors quelqu'un peut-il m'aider à comprendre pourquoi la deuxième fonction fonctionne et non la première pour le tri?

Merci!

< pré> XXX


6 commentaires

arr.length = 6. i


et cela semble être une sorte de bulle, pas de tri rapide


@BrijRajKishore Le tri rapide est-il une méthode différente? Je vais devoir me pencher là-dessus!


Oui quicksort est en effet un algorithme de tri très différent.


un peu hors sujet: votre algorithme de tri est très inefficace et semble étrange. Je vous recommande vivement de consulter certains algorithmes de tri de base, comme le tri à bulles, au lieu d'inventer quelque chose d'étrange.


@AdrianShum Oui, reconnaissant cela. C'était plus un exercice tout en en apprenant plus sur les algorithmes de tri, mais merci pour l'encouragement. Je lis maintenant les algorithmes de tri et j'y reviendrai probablement plusieurs fois au fur et à mesure.


3 Réponses :


0
votes

La première fonction ne fonctionne pas car la condition de la boucle for est for (let j = 0; j ici arr.length - 1 est égal à 5, donc la boucle for irait de 0 jusqu'à ce qu'elle soit inférieure à (6 - 1) afin qu'elle n'atteigne jamais réellement j = 5 .

La deuxième fonction fonctionne car elle va de 0 à moins de 6, donc elle atteint j=5


0 commentaires

1
votes

arr.length = 6, donc la boucle for doit indexer le tableau de 0 jusqu'à ce qu'il soit inférieur à arr.length


2 commentaires

Les réponses triviales doivent aller dans la section des commentaires. Veuillez consulter stackoverflow.com/help/how-to-answer


Oof ... J'aurais dû attraper ça, oups. Merci de l'avoir signalé!



0
votes

arr.length = 6, et votre boucle est (i


0 commentaires