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} #降順
メソッドを書き直す必要がなくなります。