public class Arrays {

	public static void main(String[] args) {

		int[] a;

		a = readArray();
		printArray(a);

		Out.print("Zu suchende Zahl: ");
		int x = In.readInt();
		int foundIdx = search(a, x);
		Out.println(x + " gefunden an Position " + foundIdx);
		foundIdx = binarySearch(a, x);
		Out.println(x + " gefunden an Position " + foundIdx);
	}



	static int search(int[] arr, int elem) {
		for (int i = 0; i < arr.length; i++) {
			Out.print("+");
			if (arr[i] == elem) {
				return i;
			}
		}
		// not found
		return -1;
	}

	static int binarySearch(int[] a, int elem) {

		int m;
		int lowerIdx, upperIdx;
		lowerIdx = 0;
		upperIdx = a.length - 1;

		while (lowerIdx <= upperIdx) {
			Out.print("+");
			m = (lowerIdx + upperIdx) / 2;
			if (a[m] == elem) {
				return m;
			} else if (elem > a[m]) {
				// liegt oberen Bereich
				lowerIdx = m + 1;
			} else {
				// liegt unteren Bereich
				upperIdx = m - 1;
			}
		}
		return -1;
	}

	static int[] readArray() {
		Out.print("Laenge: ");
		int n = In.readInt();
		int[] b = new int[n];
		Out.print(n + " Werte: ");
		for (int i = 0; i < b.length; i++) {
			b[i] = In.readInt();
		}
		return b;
	}

	static void printArray(int[] c) {
		Out.print("{");
		for (int i = 0; i < c.length; i++) {
			if (i == c.length - 1 ) {
				Out.print(c[i]);
			} else {
				Out.print(c[i] + ", ");
			}
		}
		Out.println("}");
	}

}
