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
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
#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
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]
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