1 Replies - 4131 Views - Last Post: 19 July 2012 - 12:06 PM Rate Topic: -----

#1 dman187   User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 6
  • Joined: 02-July 12

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?
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



Is This A Good Question/Topic? 0
  • +

Replies To: Binary search infinite loop

#2 SwiftStriker00   User is offline

  • No idea why my code works
  • member icon

Reputation: 440
  • View blog
  • Posts: 1,618
  • Joined: 25-December 08

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;
 }


Was This Post Helpful? 0
  • +
  • -

Page 1 of 1