Thread suche in einem array
(20 answers)
Opened by bo at 2006-12-21 12:12
Wie wäre es mit einer abschätzenden Suche:
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 #!/usr/bin/perl use strict; use warnings; my @ids = qw/1 3 4 12 41 43 44 55 67 78 103 156 167 176 198 244 300 345 355/; my $id = 4; my $prev_id = 'undef'; my $next_id = 'undef'; if($id>=$ids[0] && $id<=$ids[-1]) { my $abstand=($ids[-1]-$ids[0])/scalar(@ids); my $pos=int($id/$abstand); if($ids[$pos]<$id) { $pos+=1 while($id>$ids[$pos]); } elsif($ids[$pos]>$id) { $pos-=1 while($id<$ids[$pos]); } if($id==$ids[$pos]) { $prev_id =$ids[$pos-1] if($pos-1>=0); $next_id =$ids[$pos+1]if($pos+1<=$#ids); } } print "VOR ID: $prev_id\n"; print " ID: $id\n"; print "NACH ID: $next_id\n"; <!--EDIT|topeg|1166737034--> |