Implementieren Sie den Algorithmus in Ruby: Tag 2 - Blasensortierung -

Am zweiten Tag fragte ich mich, ob ich es ehrlich machen sollte. Klicken Sie hier für den ersten Tag Gegenseitige Teilungsmethode - ")>

Implementieren Sie die Blasensortierung noch heute

Was ist Blasensorte?

Ein Algorithmus, der benachbarte Zahlen vergleicht und gemäß Bedingungen austauscht Dieses Mal implementieren wir, indem wir von der rechten Seite der Zahlenspalte aus vergleichen und in aufsteigender Reihenfolge anordnen

bubbleSort.rb

Code

#Blasensorte

def bubbleSort(num)
  len = num.length                           #Speichert die Länge einer Sequenz
  len.times do |i|                           #Schleife für die Länge einiger Reihen
    (len - 1).downto(i+1) do |j|             #Anzahl Zeilenlänge-1~i+Schleife zu 1
      if num[j]  < num[j-1]                  #Vergleichen Sie den innersten Teil der Reihe mit dem vorhergehenden.
        num[j], num[j-1] = num[j-1], num[j]  #Wenn die Zahl auf der Rückseite kleiner ist, ersetzen Sie sie
      end
    end
    puts "#{i+1}Zeit;#{num.join(" ")}"       #Ausgabe
  end
end

puts "Geben Sie eine Nummer ein"
number = gets.split().map(&:to_i)             #Speichern Sie die eingegebene Nummer in einem Array als int-Typ
bubbleSort(number)                            #Lauf

Lauf

Geben Sie eine Nummer ein
5 9 3 1 2 8 4 7 6
1. Mal; 1 5 9 3 2 4 8 6 7
2. Mal; 1 2 5 9 3 4 6 8 7
3. Mal; 1 2 3 5 9 4 6 7 8
4. Mal; 1 2 3 4 5 9 6 7 8
5. Mal; 1 2 3 4 5 6 9 7 8
6. Mal; 1 2 3 4 5 6 7 9 8
7. Mal; 1 2 3 4 5 6 7 8 9
8. Mal; 1 2 3 4 5 6 7 8 9
9. Mal; 1 2 3 4 5 6 7 8 9

Vielleicht ist das richtig ... Diesmal von der Rückseite des Arrays. Kurz gesagt, ich habe nach der Nummer sortiert, die ich später eingegeben habe. Anstatt wie üblich mit den Zeiten zu wiederholen, habe ich versucht, Downto zu verwenden.

Downto-Methode

downto(min) {|n| ... } -> self Wiederholen Sie den Block und dekrementieren Sie von self auf min um 1. Wenn Sie <min sind, tun Sie nichts. .. [Referenz: Ruby 2.7.0 Referenzhandbuch]

Schließlich

Es scheint, dass verschiedene Implementierungen durch Ändern der Bedingungen vorgenommen werden können, und es hat Spaß gemacht, zu schreiben. Ist es möglich, die Elemente eines Arrays nur durch Ruby zu ersetzen? Ich fühlte mich wie es war, aber ich konnte es nicht vergleichen, weil ich andere Sprachen nicht verstand.

Ich bin der Meinung, dass es unter den gleichen Bedingungen möglich sein könnte, die Ausführung zu beschleunigen und den Code zu vereinfachen. Bitte geben Sie mir die Weisheit aller Experten.

Morgen werden wir eine Dichotomie implementieren.

Recommended Posts

Implementieren Sie den Algorithmus in Ruby: Tag 2 - Blasensortierung -
Implementieren Sie den Algorithmus in Ruby: Tag 1 - Europäische gegenseitige Teilung -
Implementieren Sie den Algorithmus in Ruby: Tag 3-Dichotomie-
Blasensortierung durchführen und mit Ruby sortieren auswählen
Sortieren in aufsteigender Reihenfolge in Java (Blasensortierung: Einfacher Austauschmethodenalgorithmus)
Versuchen Sie, Yuma in Ruby zu implementieren
Implementieren Sie den gRPC-Client in Ruby
Nach mehreren Feldern in der Klasse sortieren
Implementierung eines grundlegenden Such- / Sortieralgorithmus in Java
Die Ruby-Version wird in der .rbenv / version-Datei verwaltet
[Ruby] Code zur Anzeige des Tages
So erstellen Sie die einfachste Blockchain in Ruby
Ich möchte den Wert in Ruby erhalten
Java Bubble Sort
Schwer in Rubin! ??
[Ruby] Die Rolle von Indizes beim Lernen von Elementen in Arrays
Unterschiede zwischen Klassen und Instanzen in Ruby
[Ruby / Rails] Legen Sie einen eindeutigen (eindeutigen) Wert in der Klasse fest
Rufen Sie die URL des HTTP-Umleitungsziels in Ruby ab