0801006ヒープソート - アルゴリズムイントロダクション

screenshot

Ruby の配列への[]のアクセスは、アルゴリズムイントロダクション擬似コードの配列 -1 なので、 アルゴリズムイントロダクションと同じ挙動をする HArray を定義する class HArray < DelegateClass(Array) attr_accessor :heap_size def initialize(a = []) super(a) self.heap_size = a.length end def [](key) __getobj__[key-1] end def []=(key, val) __getobj__[key-1]= val end end # Array[0] == HArray[1]

http://introductiontoalgorithms.g.hatena.ne.jp/keyword/0801006%e3%83%92%e3%83%bc%e3%83%97%e3%82%bd%e3%83%bc%e3%83%88

実装なら別にCで書けばいいような。擬似コードが示されるのは、瑣末な点を意図的に省くためじゃなかろうか。
ヒープソートとプライオリティキューの Ruby での実装例とか。

http://b.hatena.ne.jp/entry/http://introductiontoalgorithms.g.hatena.ne.jp/keyword/0801006%e3%83%92%e3%83%bc%e3%83%97%e3%82%bd%e3%83%bc%e3%83%88