#!/usr/bin/perl use warnings; use strict; use vars qw($b $c $d $e $i $x); sub insert { my $valuetoinsert = pop; my $position = pop; my @thelist = @_; splice(@thelist, $position, 0, $valuetoinsert); return @thelist; } my $nrlist = 500; my $nrin = 200; my @l = (1 .. $nrlist); my @in = (1 ..$nrin); $x = 0; $b = $nrlist; @l = insert(@l, int($b / 2), $in[$x]); while ($x < $nrin) { $c = $b / 2; $d = int(($b - $c) / 2); $e = int(($b + $c) / 2); if ($d == 0 || $e == 0) { $b = $#l + 1; next; } @l = insert(@l, $d, $in[$x]); $x ++; @l = insert(@l, $e, $in[$x]); $x ++; $b = $c; } for($i = 0; $i <= $#l; $i++) { print "$i\t$l[$i]\n"; }