public static int binarySearch( String[] input, String searchFor ) {
if(null == input)
return -1;
int low =0;
int high = input.length;
int middle = (high+low)/2;
while(high >low){
if(input[middle].equals(searchFor)){
return middle;}
if (input[middle].compareTo(searchFor)>0){
high = middle;
}
else {
low = middle;
}
middle = (high+low)/2;
}
return -1;
} // end binarySearch
Binary search infinite loop
Page 1 of 11 Replies - 4131 Views - Last Post: 19 July 2012 - 12:06 PM
#1
Binary search infinite loop
Posted 19 July 2012 - 11:47 AM
i keep getting an infinite loop when i try this binary search. can you help me to see where my logic is wrong?
Replies To: Binary search infinite loop
#2
Re: Binary search infinite loop
Posted 19 July 2012 - 12:06 PM
In your algorithm you don't want to set low=middle, because, that will get it stuck when you search for something that doesnt exist. You want to search 1 away from the middle
if (input[middle].compareTo(searchFor)>0)
{
high = middle-1;
}
else
{
low = middle + 1;
}
Page 1 of 1

New Topic/Question
Reply


MultiQuote



|