Thread suche in einem array (20 answers)
Opened by bo at 2006-12-21 12:12

docsnyder
 2006-12-22 10:55
#72672 #72672
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Na, dann aber doch gleich richtig suchen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my(@ids) = qw/1 3 4 12 41 43 44 55 67 78 103 156 167 176 198 244 300 345 355/;
my($id, $idx) = (4, undef);

sub binSearch {
my($arrRef, $val, $minIdx, $maxIdx) = @_;
my($mid) = int(($maxIdx + $minIdx)/ 2);
my($idx);

return(($arrRef->[$mid] == $val) ? $mid : (($minIdx == $maxIdx) ? undef : (($arrRef->[$mid] >= $val) ? binSearch($arrRef, $val, $minIdx, $mid) : binSearch($arrRef, $val, $mid+1, $maxIdx))));
}

printf("IDX: %s\n", defined($idx=binSearch(\@ids, $id, 0, $#ids)) ? $idx : "UNDEF");


Gruß, Doc\n\n

<!--EDIT|docsnyder|1166779635-->

View full thread suche in einem array