Thread 2 Arrays vergleichen (27 answers)
Opened by alexus-777 at 2004-04-22 11:47

Ishka
 2004-04-22 18:26
#81780 #81780
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
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}

View full thread 2 Arrays vergleichen