ヒープの質問です(難易度高)
ランダムな数15個(=1+2+4+8個)を
二分ヒープに並べ替える次のようなプログラムを作りました。
require 'HeapByArray.rb'
array=Array.new();
i=0;
puts("Before")
while(i<15)
i+=1;
array[i]=rand(100);
print(" "+array[i].to_s)
end
puts(" ");
queue=HeapByArray::new
i=0;
while(i<15)
i+=1;
queue.enqueue(array[i]);
end
puts("After")
i=0;
while(i<15)
i+=1;
array[i]=queue.dequeue();
print(" "+array[i].to_s);
end
puts();
たとえばデータが
[1,11,14,9,5,2,15,7,6,4,12,10,8,3,13]ならば
[15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]といった風に
並べ替えられます。実行結果は
Before
1,11,14,9,5,2,15,7,6,4,12,10,8,3,13
After
15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
となります。
そこでこの実行結果表示をツリーの表示、つまり
□□□8
□□12
□□□7
□14
□□□6
□□11
□□□5
15
□□□4
□□10
□□□3
□13
□□□2
□□9
□□□1
(□部分は空白です。ここで質問記事を投稿するときになぜか空白は無視されてしまうので□にしました。)
という風になるように改良したいのですが何をすればよいでしょうか?
詳しい方、よろしくお願いいたします。