Binary Searching

We can speed up the search by assuming that all the data in the vector is sorted beforehand.

Binary Searching

We can speed up the search by assuming that all the data in the vector is sorted beforehand.

Binary Searching

We can speed up the search by assuming that all the data in the vector is sorted beforehand.

Binary Searching

A binary search requires three variables. As well as the current position (that is to say the position we are currently inspecting), we need to hold the left and right positions which bound the part of the vector where the value could be.

Binary Searching

A binary search requires three variables. As well as the current position (that is to say the position we are currently inspecting), we need to hold the left and right positions which bound the part of the vector where the value could be.

Binary Searching

A binary search requires three variables. As well as the current position (that is to say the position we are currently inspecting), we need to hold the left and right positions which bound the part of the vector where the value could be.

Binary Searching

We'll call the variable which holds the current position 'middle', just to emphasise that current position is half-way between the left and right positions.

Binary Searching

We'll call the variable which holds the current position 'middle', just to emphasise that current position is half-way between the left and right positions.

Binary Searching

We'll call the variable which holds the current position 'middle', just to emphasise that current position is half-way between the left and right positions.

Binary Searching

The left variable is going to start at the left-most element in the vector, i.e. position 0...

Binary Searching

The left variable is going to start at the left-most element in the vector, i.e. position 0...

Binary Searching

The left variable is going to start at the left-most element in the vector, i.e. position 0...

Binary Searching

and the right variable is going to start off at the right-most element in the vector, i.e. position size()-1.

Binary Searching

and the right variable is going to start off at the right-most element in the vector, i.e. position size()-1.

Binary Searching

and the right variable is going to start off at the right-most element in the vector, i.e. position size()-1.

Binary Searching

The logic for a binary search is completely differen t to a brute-force, sequential search, so we have to change the loop condition and body.

Binary Searching

The logic for a binary search is completely differen t to a brute-force, sequential search, so we have to change the loop condition and body.

Binary Searching

The logic for a binary search is completely differen t to a brute-force, sequential search, so we have to change the loop condition and body.

Binary Searching

The logic for a binary search is completely differen t to a brute-force, sequential search, so we have to change the loop condition and body.

Binary Searching

The logic for a binary search is completely differen t to a brute-force, sequential search, so we have to change the loop condition and body.

Binary Searching

The loop terminates when the left and right variables are adjacent

Binary Searching

The loop terminates when the left and right variables are adjacent

Binary Searching

The loop terminates when the left and right variables are adjacent

Binary Searching

and the body has to work out where the middle element is...

Binary Searching

and the body has to work out where the middle element is...

Binary Searching

and the body has to work out where the middle element is...

Binary Searching

...locate the current string...

Binary Searching

...locate the current string...

Binary Searching

...locate the current string...

Binary Searching

...and then check out whether it is before, after or the same as the search string.

Binary Searching

...and then check out whether it is before, after or the same as the search string.

Binary Searching

...and then check out whether it is before, after or the same as the search string.

Binary Searching

If the current string comes before the search string, then we need to move the left-hand boundary up to the current position.

Binary Searching

If the current string comes before the search string, then we need to move the left-hand boundary up to the current position.

Binary Searching

If the current string comes before the search string, then we need to move the left-hand boundary up to the current position.

Binary Searching

If the current string comes after the search string, then we need to move the right-hand boundary down to the current position.

Binary Searching

If the current string comes after the search string, then we need to move the right-hand boundary down to the current position.

Binary Searching

If the current string comes after the search string, then we need to move the right-hand boundary down to the current position.

Binary Searching

But if the currebt string matched, we will just make sure that the left and right bounds are fully collapsed so that the loop will terminate.

Binary Searching

But if the currebt string matched, we will just make sure that the left and right bounds are fully collapsed so that the loop will terminate.

Binary Searching

But if the currebt string matched, we will just make sure that the left and right bounds are fully collapsed so that the loop will terminate.

Binary Searching

And now we've finished looking we need to either return the current position or the error value (-1). This time, the check depends on whether the strings match.

Binary Searching

And now we've finished looking we need to either return the current position or the error value (-1). This time, the check depends on whether the strings match.

Binary Searching

And now we've finished looking we need to either return the current position or the error value (-1). This time, the check depends on whether the strings match.

Binary Searching

And now we've finished looking we need to either return the current position or the error value (-1). This time, the check depends on whether the strings match.

Binary Searching

And now we've finished looking we need to either return the current position or the error value (-1). This time, the check depends on whether the strings match.

Binary Searching

Finished code.

import java.util.Vector;

class Searcher {

	public int search(String s){
		int k=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("dog");
		v.addElement("cow");
		v.addElement("fox");
		v.addElement("rabbit");
		v.addElement("goose");
		v.addElement("fish");
		v.addElement("sparrow");
		v.addElement("horse");
		v.addElement("goat");
		v.addElement("pig");
		v.addElement("sheep");
		v.addElement("chicken");
		v.addElement("mouse");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int k=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("dog");
		v.addElement("cow");
		v.addElement("fox");
		v.addElement("rabbit");
		v.addElement("goose");
		v.addElement("fish");
		v.addElement("sparrow");
		v.addElement("horse");
		v.addElement("goat");
		v.addElement("pig");
		v.addElement("sheep");
		v.addElement("chicken");
		v.addElement("mouse");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int k=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int k=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		*int k=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left, right;
		int k=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left, right;
		int k=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left, right;
		int k=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left, right;
		int middle=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left, right;
		int middle=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left, right;
		int middle=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right;
		int middle=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right;
		int middle=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right;
		int middle=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(!(k==v.size() || s.equals(v.elementAt(k)))){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(condition){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(condition){
			k++;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(condition){
			body
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(condition){
			body
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(condition){
			body
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			body
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			body
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			body
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			...
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			...
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			...
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			...
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			...
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			...
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				...
			else if(currString.compareTo(s)>0)
				...
			else ...;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				...
			else if(currString.compareTo(s)>0)
				...
			else ...;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				...
			else if(currString.compareTo(s)>0)
				...
			else ...;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				...
			else ...;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				...
			else ...;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				...
			else ...;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else ...;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else ...;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else ...;
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else {
				left=middle;
				right=middle+1;
				};
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else {
				left=middle;
				right=middle+1;
				};
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else {
				left=middle;
				right=middle+1;
				};
			}

		if(k!=v.size()) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else {
				left=middle;
				right=middle+1;
				};
			}

		if(s.equals(v.elementAt(middle))) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else {
				left=middle;
				right=middle+1;
				};
			}

		if(s.equals(v.elementAt(middle))) return k;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else {
				left=middle;
				right=middle+1;
				};
			}

		if(s.equals(v.elementAt(middle))) return middle;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}
import java.util.Vector;

class Searcher {

	public int search(String s){
		int left=0, right=v.size()-1;
		int middle=0;

		while(left!=right-1){
			middle=(left+right)/2;
			String currString=(String)v.elementAt(middle);
			if(currString.compareTo(s)<0)
				left=middle;
			else if(currString.compareTo(s)>0)
				right=middle;
			else {
				left=middle;
				right=middle+1;
				};
			}

		if(s.equals(v.elementAt(middle))) return middle;
		else return -1;
		}

	Vector v=new Vector();

	public Searcher(){
		v.addElement("cat");
		v.addElement("chicken");
		v.addElement("cow");
		v.addElement("dog");
		v.addElement("fish");
		v.addElement("fox");
		v.addElement("goat");
		v.addElement("goose");
		v.addElement("horse");
		v.addElement("mouse");
		v.addElement("pig");
		v.addElement("rabbit");
		v.addElement("sheep");
		v.addElement("sparrow");
		}

	}