import java.io.IOException; class NichtGefunden extends Exception{ public NichtGefunden(){super();} } class MyRandom{ static private int max = 5; static private java.util.Random rGen = new java.util.Random(); static void setMax( int m){ max = m;} static int zufall(){ int i = Math.abs(rGen.nextInt()); return (i % max); } } class BinaerSuche { BinaerSuche(){ a[0] = 1; for (int i=1; i < a.length; i++) a[i] = a[i-1] + MyRandom.zufall(); } final private int n = 1000; private int[] a = new int[n]; private int rekBinSuche(int x, int min, int max) throws NichtGefunden{ if (min > max) throw new NichtGefunden(); int m = (min + max) / 2; int am = a[m]; if (x == am) return m; if (x < am) return rekBinSuche(x, min, m-1); if (x > am) return rekBinSuche(x, m+1, max); throw new NichtGefunden(); } int binSuche(int x) throws NichtGefunden { return rekBinSuche(x, 0, a.length-1); } } public class BinSuche { public static void main(String args[]) { final int such = 32; System.out.println("Binäre Suche "); System.out.println(""); for (int k = 0; k < 10; k++){ BinaerSuche b = new BinaerSuche(); try { int index = b.binSuche(such); System.out.println("Gefunden bei Index: "+index); } catch(NichtGefunden e){ System.out.println(such + " wurde nicht gefunden!"); } } } }