À l'aide de la méthode de tri à Bulles pour un tableau en Ruby
Je suis en train de mettre en œuvre la méthode de tri à Bulles dans un simple problème de codage pour le Rubis, mais je vais avoir quelques difficultés. Je comprends l'idée, c'est de regarder la valeur du premier élément et de le comparer à la valeur du deuxième élément et le swap en conséquence, mais je n'arrive pas à le faire dans un réel problème. Quelqu'un serait-il prêt à donner un bref exemple de la façon dont cela pourrait fonctionner en Ruby?
Avez-vous vraiment besoin de la bulle de tri? Est-il destiné à l'enseignement ou à des fins pratiques? Pour des raisons pratiques, Ruby a beaucoup de façons de tri qui renvoie les mêmes résultats. Par exemple, pour l'ascension de tri d'un tableau, vous pourriez faire: >> array.tri { |a, b| a <=> b }
OriginalL'auteur ppreyer | 2012-06-18
Vous devez vous connecter pour publier un commentaire.
Mise en œuvre correcte du tri à bulles avec une boucle while
Oui, mais pourquoi la réponse incorrecte si le bloc-échangé est définie à true... comment inverser le booléen changé l'exactitude de la déclaration de valeur. Dans ce cas, je dirais "c'est correcte, car le tri à bulles maintient le tri il y a encore de swaps - dès qu'il ne trouve pas plus de swaps, il s'arrête de tri"
OriginalL'auteur cluv
OriginalL'auteur steenslag
Source
Bien que je recommanderais certainement quelque chose à un meilleur moment de l'exécution que de bubblesort 🙂
OriginalL'auteur Chris Dargis
Voici ma version de la réponse sommet. Il appelle à la taille sur le tableau qu'une seule fois au lieu de chaque boucle. Il ne se compare pas les éléments une fois qu'ils ont déménagé à la fin du tableau.
Et la boucle while se ferme une boucle plus tôt. Vous avez terminé une fois que vous avez traversé l'ensemble de la baie et à seulement un swap, donc pas besoin de faire un autre avec 0 swaps.
L'exécution de ce test prend 25% de temps en moins.
OriginalL'auteur calasyr
Viens de re-écrire @VanDarg du code pour utiliser une boucle while
(note: le code n'est pas testé... exécuter à vos risques et périls)
Edit: mis à jour échangé-valeur en raison de tri à bulles maintient le tri il y a encore de swaps - dès qu'il ne trouve pas plus de swaps, il s'arrête de tri. Remarque, cela ne pas suivez @Doug code, mais ne sont conformes avec @cLuv fixer
OriginalL'auteur Taryn East
OriginalL'auteur Basil
De la ligne droite avant:
OriginalL'auteur Bohr
Si vous ne souhaitez pas utiliser ce drôle de permutation de ligne (OMI):
voici mon point de vue:
OriginalL'auteur funfuntime
De la vieille école
OriginalL'auteur Siva Kandaraj
OriginalL'auteur Auwal Muhammad
Voici mon prendre l'aide de l'opérateur XOR:
OriginalL'auteur Adrian Statescu
Un autre, légèrement différente de nommage.
OriginalL'auteur nikkypx
OriginalL'auteur Anuj
Voici mon code. J'ai comme l'utilisation de la (arr.longueur-1). Pour les boucles, vous pouvez également utiliser de telles itérations exemple jusqu'à ce que, tandis que, pour d', jusqu'à boucle à faire, etc. Amusant d'essayer différentes choses pour voir comment il fonctionne.
OriginalL'auteur hken27