
kev670
Novice
Oct 21, 2009, 2:08 PM
Post #1 of 16
(879 views)
|
|
Binary Search Help please
|
Can't Post
|
|
I'm writing a larger program and am trying to implement a binary search. In this test program the sub reads in a preset array with 5 elements. the program should ask for a name and return 1 if the name is found and 0 if it isn't, but unfortunatly it only reads back 1 for some of the elements and i cant figure it out. can you help please #!/usr/bin/perl use strict; use warnings; my @namesArray = ("bill", "cill", "dill", "fill", "zzzz"); print "\tName: "; my $name; $name = <STDIN>; chomp($name); my $i = &binarySearch ($name,@namesArray); print "$i"; sub binarySearch { my ($nameHolder, @namesArray) = @_; my $high=@namesArray-1; my $low = 0; while ($low <= $high) { my $mid = ($low + $high)/2; if (($namesArray[$mid] lt $nameHolder)) { $low = $mid + 1; } elsif (($namesArray[$mid] gt $nameHolder)) { #print "hi tere 2"; $high = $mid - 1; } else { return 1; } } return 0; }
(This post was edited by kev670 on Oct 21, 2009, 4:25 PM)
|