use strict; use warnings; my $LIST_SIZE ||= 20; my @heap; for(my $i = 0; $i < $LIST_SIZE; $i++){ } #ランダムに並び替える for (my $i = @heap; --$i; ) { next if $i == $j; @heap[$i, $j] = @heap[$j, $i]; } # 1個目はダミー my @g_heap = (-1); print_array(\@heap); # 実行前 &heapsort(\@heap); print_array(\@heap); # 実行後 sub heapsort{ &insertheap($array); $array->[$i] = &get_root; } } sub insertheap{ upheap($#g_heap); } } sub upheap{ my $tmp = $g_heap[$index]; } $g_heap[$index] = $tmp; } sub get_root{ my $tmp; exit; } $tmp = $g_heap[1]; $g_heap[1] = $g_heap[$#g_heap]; &downheap; } sub downheap{ } my $tmp = $g_heap[1]; my $i = 1; my $j = $i * 2; if( ($j + 1 <= $#g_heap) && ($g_heap[$j] > $g_heap[$j + 1]) ){ $j++; } if($tmp <= $g_heap[$j]){ last; } $g_heap[$i] = $g_heap[$j]; $i = $j; } $g_heap[$i] = $tmp; } sub print_array{ for my $i(@$ref_array){ } }
atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!