ボゾソート(Bozo Sort)

今日は結局何も書けなかったのでボゾソート(ボゴソートの仲間)を適当に書いた。

#!/usr/bin/ruby1.9.1
# -*- coding: utf-8 -*-

class Array
    def bozo_sort!
        defined? yield or return bozo_sort!{|a,b|a<=>b}
        until (1...size).inject(true){|s,i|s && yield(self[i-1],self[i])!=1}
            i, j = rand(size), rand(size)
            self[i], self[j] = self[j], self[i]
        end
        return self
    end
    def bozo_sort
        return dup.bozo_sort!
    end
end

a = [4,2,3,5,7,4,6,5,2]
a.bozo_sort!
p a