Implémentez l'algorithme dans Ruby: Jour 2 -Bubble Sort-

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

Qu'est-ce que le tri à bulles

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

code

#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

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]

finalement

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

Implémentez l'algorithme dans Ruby: Jour 2 -Bubble Sort-
Implémenter l'algorithme dans Ruby: Jour 1 - Division mutuelle euclidienne-
Implémentez l'algorithme dans Ruby: Day 3-Dichotomy-
Faire un tri à bulles et sélectionner le tri avec Ruby
Tri par ordre croissant en Java (Tri à bulles: algorithme de méthode d'échange simple)
Essayez d'implémenter Yuma dans Ruby
Implémenter le client gRPC dans Ruby
Trier par plusieurs champs dans la classe
Implémentation d'un algorithme de recherche / tri de base en Java
La version ruby est gérée dans le fichier .rbenv / version
[Ruby] Code pour afficher le jour
Comment créer la blockchain la plus simple de Ruby
Je veux obtenir la valeur en Ruby
tri de bulles java
Lourd en rubis! ??
[Ruby] Le rôle des indices dans l'apprentissage des éléments dans les tableaux
Différences entre les classes et les instances dans Ruby
[Ruby / Rails] Définissez une valeur unique (unique) dans la classe
Obtenez l'URL de la destination de la redirection HTTP dans Ruby