/**Eingabe: sortierte Folge
 * Ausgabe: gefundene Zahl*/

#include <stdio.h>
#include <stdlib.h>


bin_find (int * array, int size, int find)
{
	int l,r;	// Bereichsgrenzen
	int pos;
	l = 0; r = size;
	do {
		pos = (l+r)/2;
		printf ("%d ", pos);
		if (find < array [pos])
			r = pos-1;	// es liegt links von pos
		else	l = pos+1;	// es liegt rechts von pos
	} while (find != array[pos] && l<r);	// solange Bereich vorhanden
	if (find == array [pos]) return pos;
	return 0;	// leider nicht gefunden
}

int main()
{
	int size = 100;
	int array [101];// = {2,4,7,12,43,76,321,675,0,};
	int i;
	
	array [0] = 1;
	for (i=1; i< size; i++)
	{
		array[i] = array [i-1] + rand() % 2;
		printf ("%d: %d\t",i-1, array [i]);
		if (! (i%5)) printf ("\n");
	}	printf ("\n");
	

	size = bin_find (array, size, 20);
	printf ("\nGefunden bei %d\n", size);
	return 0;
}


