クイックソート
ライブラリに頼らないで実装してみた。
#!/usr/bin/env ruby def qsort(data, min, max) if min >= max return end pivot = data[(max + min) / 2] i = min j = max while 1 while data[i] < pivot i += 1 end while data[j] > pivot j -= 1 end if i >= j break end data[j] = data[i] ^ data[j] data[i] = data[j] ^ data[i] data[j] = data[i] ^ data[j] i += 1 j -= 1 end qsort(data, min, i - 1) qsort(data, j + 1, max) end p data = [3322, 22, 34, 383222, 38, 28, 33] qsort(data, 0, data.size - 1) p data