@OscarRyz fornito risposte chiariti molto per me sulla questione su come funziona l'ordinamento, esp
{ |x, y| y <=> x }
Sulla base della mia comprensione sto fornendo qui ciò che lo stato della matrice sarebbe dopo ogni confronto per i risultati del blocco sopra.
Nota: Ottenuto il riferimento di stampare i valori di paramaters blocco e1, e2 da ruby-forum
1.9.3dev :001 > a = %w(d e a w f k)
1.9.3dev :003 > a.sort { |e1, e2| p [e2, e1]; e2 <=> e1 }
["w", "d"]
["k", "w"]
["k", "d"]
["k", "e"]
["k", "f"]
["k", "a"]
["f", "a"]
["d", "f"]
["d", "a"]
["d", "e"]
["e", "f"]
=> ["w", "k", "f", "e", "d", "a"]
Uno stato matrice intuito in fase di esecuzione dopo ogni confronto:
[e2, e1] Comparsion Result Array State
["w", "d"] 1 ["w", "e", "a", "d", "f", "k"]
["k", "w"] -1 ["w", "e", "a", "d", "f", "k"]
["k", "d"] 1 ["w", "e", "a", "k", "f", "d"]
["k", "e"] 1 ["w", "k", "a", "e", "f", "d"]
["k", "f"] 1 ["w", "k", "a", "e", "f", "d"]
["k", "a"] 1 ["w", "k", "a", "e", "f", "d"]
["f", "a"] 1 ["w", "k", "f", "e", "a", "d"]
["d", "f"] -1 ["w", "k", "f", "e", "a", "d"]
["d", "a"] 1 ["w", "k", "f", "e", "d", "a"]
["d", "e"] -1 ["w", "k", "f", "e", "d", "a"]
["e", "f"] -1 ["w", "k", "f", "e", "d", "a"] (Result)
Grazie,
Jignesh
Penso che valga la pena aggiungere che '<=>' è un metodo definito in 'Comparable' e mescolato con' String'. 'Fixnum' e' Bignum' definiscono anche '<=>'. È possibile implementare '<=>' in qualsiasi classe in cui siano necessari lo smistamento o il confronto. –
Ho evidenziato la frase importante. xey saranno 2 elementi dell'array, scelti dall'algoritmo di ordinamento stesso. – bltxd
Grazie. Lo capisco adesso! –