Thread Immer hälftig einfügen?
(18 answers)
Opened by bianca at 2012-02-15 11:01 2012-02-16T13:38:26 bianca Hmm, etwas merkwürdig, da doch eigentlich jedes einzelne Einfügen die Ausgangsliste schon vergrößert. Aber gut, man kann natürlich bei der Berechnung der Positionen diesen Effekt erstmal ignorieren und danach alles auf einmal einfügen. Vielleicht so: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #!/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"; } Es werden offenbar 200 Werte in eine Liste von 500 anderen Werten eingefügt. Trotzdem bin ich nicht sicher, ob das jetzt so richtig ist. Aber ein Ausgangspunkt könnte der Code sein. Erhebt aber wie gesagt nicht den Anspruch, schon die fertige Lösung zu sein. Last edited: 2012-02-17 14:42:29 +0100 (CET) |