Thread 2 Arrays vergleichen
(27 answers)
Opened by alexus-777 at 2004-04-22 11:47
Oh, man - wir sollten mal das Design unserer Links ändern. Hab nicht gemerkt, daß das 'hier' ein Link war.
Im _ungünstigsten_ Fall hat man O(n) - schon klar. Die wahrscheinlichkeit dafür, daß ein Hash maximal ungünstig ist, wäre schonmal verdammt klein (ca. 1/n^n, glaub ich), abgesehen davon nimmt Perl eine Umordnung vor, wenn ein Hash beginnt ungünstig angeordnet zu werden. Und O(1) hat man nur im Falle der günstigsten Anordnung, allerdings ist der Aufwand für eine Optimale Anordnung enorm. Und bei einer halbwegs vernünftigen Anordnung kommst du eben im Schnitt auf O(log n) (Man halte sich immer bewusst, daß Hashes eine sehr heuristische Angelegenheit sind). Und mit Optimierungen bekommst du höchstens deine Konstannte runter, nicht dein Laufzeitverhalten besser. Und als Beweis der Tatsache diene dir ein ausgiebiger Benchmark.\n\n <!--EDIT|Ishka|1082647584--> 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} |