sortのブロックを使う素晴らしさ

sort関数では、引数にブロックを使います。なんでかと言うと、様々な順序で並び変えができるようにするためです。
例えばsort関数を使わないで自作でクイックソートの関数を作ります。以下はその一部分です。

def partitioning(data, pivot, left, right)
  while true
    while data[left] < pivot
      left +=1
    end
    while data[right] > pivot
      right -= 1
    end
    break if left >= right
    wk = data[left]
    data[left] = data[right]
    data[right] = wk
    left += 1
    right -= 1
  end
  return left, right
end

実行結果

ソート結果:[1, 3, 4, 9]

上記のように昇順になっています。これを降順にするには、

"data[left] < pivot" -> "data[left] > pivot"
"data[right] > pivot" -> "data[right] < pivot"

と書き換える必要があります。
sort関数を使うと

array = [1, 3, 4, 9]
sort{|x,y| x <=> y} #昇順
sort{|x,y| y <=> x} #降順

メソッドを書き直す必要がなくなります。