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

docsnyder
 2006-12-21 15:57
#72668 #72668
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
@Ishka

Das nennt man "binäre Suche" ...

@bo

Ich weiss nicht, wie gross Deine Liste von ID's werden kann und ob die Liste statisch ist, oder sich ständig ändert. Bei grossen statischen Listen, könntest Du Laufzeit auf Kosten von Speicherplatz sparen (letzteres sollte heutzutage ja weniger das Problem sein):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my @ids = (1, 3, 4, 12, 41, 43, 44);
my $id = 4;

sub addID {
for ( $i=0; $i<scalar(@_); $i++ ) {
$idMap{$_[$i]} = $i;
}
}

addID(@ids);

printf("ID: $id, NEXT: %d, PREV: %d\n", $ids[$idMap{$id}+1], $ids[$idMap{$id}-1]);


Um das Beispiel einfach zu halten, habe ich die Prüfung, ob PREV bzw. NEXT überhaupt existiert, weggelassen (das einzufügen ist straightforward).

Gruß, Doc

View full thread suche in einem array