Le deuxième jour, je me demandais si je devais le faire honnêtement. Cliquez ici pour le premier jour. Méthode de division mutuelle - ")>
Mettre en œuvre le tri à bulles aujourd'hui
Un algorithme qui compare les nombres adjacents et les échanges selon les conditions Cette fois, nous allons mettre en œuvre en comparant à partir du côté droit de la colonne numérique et en organisant par ordre croissant
bubbleSort.rb
#Tri à bulles
def bubbleSort(num)
len = num.length #Stocke la longueur d'une séquence
len.times do |i| #Boucle pour la longueur de quelques rangées
(len - 1).downto(i+1) do |j| #Longueur de ligne numérique-1~i+Boucle à 1
if num[j] < num[j-1] #Comparez la partie la plus interne de la ligne avec celle qui la précède.
num[j], num[j-1] = num[j-1], num[j] #Si le numéro à l'arrière est plus petit, remplacez-le
end
end
puts "#{i+1}Temps;#{num.join(" ")}" #production
end
end
puts "Entrez un nombre"
number = gets.split().map(&:to_i) #Stocker le nombre entré dans un tableau en tant que type int
bubbleSort(number) #Courir
Entrez un nombre
5 9 3 1 2 8 4 7 6
1ère fois; 1 5 9 3 2 4 8 6 7
2ème fois; 1 2 5 9 3 4 6 8 7
3e fois; 1 2 3 5 9 4 6 7 8
4e fois; 1 2 3 4 5 9 6 7 8
5e fois; 1 2 3 4 5 6 9 7 8
6e; 1 2 3 4 5 6 7 9 8
7e fois; 1 2 3 4 5 6 7 8 9
8e fois; 1 2 3 4 5 6 7 8 9
9e fois; 1 2 3 4 5 6 7 8 9
C'est peut-être vrai ... Cette fois depuis l'arrière du tableau. En bref, j'ai trié dans l'ordre à partir du nombre que j'ai mis plus tard. Par conséquent, au lieu de répéter avec les temps comme d'habitude, j'ai essayé d'utiliser downto.
downto méthode
downto(min) {|n| ... } -> self Répétez le bloc, en décrémentant de soi à min de 1. Si soi <min, ne faites rien. .. [Référence: Manuel de référence de Ruby 2.7.0]
Il semble que diverses implémentations puissent être faites en changeant les conditions, et c'était amusant à écrire. Est-il possible de remplacer les éléments d'un tableau uniquement par Ruby? J'avais l'impression que c'était le cas, mais je ne pouvais pas comparer car je ne comprenais pas d'autres langues.
Je pense qu'il peut être possible d'accélérer l'exécution et de simplifier le code dans les mêmes conditions, alors veuillez me prêter la sagesse de tous les experts.
Demain, nous mettrons en place une dichotomie.
Recommended Posts