/* algoritmo di ricerca binaria, operante su un
array ordinato di numeri interi */

class  Binary_Search
{
	public static void main (String[] args)
	{
		EasyIn easy = new EasyIn();
		final int N = 10 ;
		int [] a = { -9, -2, 0, 5, 6, 7, 22, 31, 44, 65 };

		/* 	a e' un array ordinato su cui effettuare la ricerca */

		System.out.println("inserire un intero da cercare");
		int x = easy.readInt() ;
		int inf= 0, sup = a.length -1, p = (inf+sup)/2 ;

		/* 	 si confronta x con la
		posizione centrale p di a  */

		while (inf<=sup && a[p] != x)
		{	if( a[p] < x )
				inf = p+1 ;/* a e' ordinato, allora la ricerca
								prosegue nelle posizioni
								[p+1, sup] di a */
			else sup = p-1 ;/* la ricerca prosegue nelle posizioni
								[inf, p-1] di a */
			p = (inf+sup)/2 ;
		} ;

		if( inf>sup )
			System.out.println(x+" non occorre nell'array");
		else
			System.out.println(x+" occorre in posizione "+p);
	}
}
