LoginSignup
2
2

More than 5 years have passed since last update.

Ruby でバケットソートを書いてみた

Last updated at Posted at 2017-03-03

バケットソートとは?

バケットソート(英: bucket sort)は、ソートのアルゴリズムの一つ。バケツソート、ビンソート(英: bin sort)などともいう。バケツ数 k 個使った場合、オーダーはO(n + k)となり、ソートする要素数nとk を無関係にできる場合線形時間ソートとなるが、要素間の全順序関係を用いるソートとは異なり、キーの取りうる値がk種類である、という入力により強い制限を要求するソートである。

「バケットソート」 『フリー百科事典 ウィキペディア日本語版』- 2017年2月5日 (日) 16:26 14:49 https://ja.wikipedia.org/wiki/バケットソート

コード

require "prime"
module BacketArray
  refine Array do
    def backet_sort
      each_with_object(Array.new(size)) { |e, a| a[e] = e }.compact
    end
  end
end

class Test
  using BacketArray
  def self.go
    list = Prime.take(10).shuffle
    print list,"\n"
    print list.backet_sort
  end
end

Test.go

実行結果

[11, 2, 3, 29, 7, 19, 13, 5, 23, 17]
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2