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

topeg
 2006-12-21 23:29
#72671 #72671
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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";
\n\n

<!--EDIT|topeg|1166737034-->

View full thread suche in einem array