[mplspm]: In a sorted list
Troy Johnson
troy.johnson at myrealbox.com
Thu Mar 21 23:55:18 CST 2002
The previous stuff is a result of my daily language jumping. I like this
code better, so if you would like to criticize it (please do!), please
do this version.
More "perly" and less "liney":
>>>>>START>>>>>
#!/usr/local/bin/perl -w
my @array = ("aa" .. "yy");
foreach $s (qw(cc gg mm aa yy zz mmm))
{
my $rv = findit($s, \@array);
print "debug: \$rv = $rv\n";
}
sub findit
{
my $string = shift;
my $sar = shift; # sorted array reference
my $try = my $interval = my $size = scalar @{$sar};
my $dir = -1;
my %seen = ();
my $found = 0;
while (1)
{
$interval = int($interval / 2) || 1;
$try += $dir * $interval;
if ($try < 0 or $try >= $size) { last; }
$dir = $string cmp $sar->[$try];
print "debug: $size $interval $try $dir $string $sar->[$try]\n";
if (not $dir) { $found = 1; last; }
if (exists $seen{$sar->[$try]}) { last; }
$seen{$sar->[$try]} = undef;
}
return $found;
}
<<<<<<END<<<<<<
--------------------------------------------------
Minneapolis Perl Mongers mailing list
To unsubscribe, send mail to majordomo at pm.org
with "unsubscribe mpls" in the body of the message.
More information about the Mpls-pm
mailing list