Ruby言語の質問になります。
ソースは以下になります。

x = ["abc","dejgk","loqp"]
p x.sort{|a,b|a<=>b} #①処理
p x.sort{|a,b|b<=>a} #②処理
# ["abc", "dejgk", "loqp"]
# ["loqp", "dejgk", "abc"]

<=>演算子の評価によって、sortメソッドはどのように処理をするのでしょうか。
私が考えている処理は以下になるのですが、実行結果と一致せず、
正しい処理が分かりません。

①処理について
 "abc"<=>"deigk" 評価 -1 "abc"を配列[0]に格納。"deigk"を配列[1]に格納
 "deigk"<=>"loqp" 評価 -1 "deigk"を配列[1]に格納。"loqp"を配列[2]に格納。
 # ["abc", "dejgk", "loqp"]

②処理について
  "deigk"<=>"abc" 評価 1 "abc" を配列[1]に格納。"deigk"を配列[0]に格納。
  "loqp"<=>"abc" 評価 1 "abc"を配列[2]に格納。"loqp"を配列[1]に格納。  
 #["deigk", "loqp", "abc"]

質問初投稿のため至らない点があるかもしれませんがお願いいたします。

以上です。
よろしくお願いします。