Thread suche in einem array
(20 answers)
Opened by bo at 2006-12-21 12:12
Sind die ids immer sortiert?
Wenn ja, kannst du in die Mitte springen und schauen, ob die gesuchte id größer oder kleiner ist, dann einen halb so großen Sprung nach vorne oder hinten machen und das solange wiederholen, bis du das Element gefunden hast, das sind deutlich weniger Abfragen, bei 1000 Elementen sind das zB. noch 10 Abfragen. Wenn nein, dann lohnt es sich vielleicht das ganze über einen Hash zu lösen. sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t] "if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep !$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1} |