Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:binaere_suche:binsuchprogramm:start [19.04.2021 15:11] – sbel | faecher:informatik:oberstufe:algorithmen:binaere_suche:binsuchprogramm:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Ein Programm zur binären Suche ====== | ||
- | |||
- | |||
- | Arbeite mit dem folgenden Programmgerüst: | ||
- | ++++ Ohne BlueJ | | ||
- | <code java App.java> | ||
- | /** | ||
- | * Erzeugt eine geordnete Zufallsreihe und ermöglicht Abfragen darüber. | ||
- | | ||
- | * @author Frank Schiebel | ||
- | * @version 1.0 | ||
- | */ | ||
- | class BinarySearch | ||
- | { | ||
- | private int[] daten; | ||
- | int anzahl; | ||
- | | ||
- | public BinarySearch(int anzahl) | ||
- | { | ||
- | this.anzahl = anzahl; | ||
- | daten = new int[anzahl]; | ||
- | int indexvorher = 0; | ||
- | for (int i = 0; i < daten.length; | ||
- | { | ||
- | if ( i>0 ) { | ||
- | indexvorher = i -1; | ||
- | } | ||
- | daten[i] = daten[indexvorher] + (int)(10*Math.random()+1); | ||
- | } | ||
- | } | ||
- | |||
- | | ||
- | public int suche(int zahl) { | ||
- | return 0; | ||
- | |||
- | } | ||
- | |||
- | public void anzeigen() { | ||
- | for (int i=0; i< anzahl; i++) { | ||
- | | ||
- | } | ||
- | } | ||
- | |||
- | | ||
- | } | ||
- | |||
- | |||
- | /* App Klasse. Steuerklasse für unser Programm */ | ||
- | public class App { | ||
- | |||
- | public static void main(String[] args) { | ||
- | BinarySearch liste = new BinarySearch(100); | ||
- | liste.anzeigen(); | ||
- | |||
- | |||
- | } | ||
- | |||
- | } | ||
- | |||
- | </ | ||
- | ++++ | ||
- | ===== Aufgaben: ===== | ||
- | |||
- | ==== A1 ==== | ||
- | |||
- | Probiere das Programm aus. Beschreibe, was es macht, verändere auch den Parameter '' | ||
- | |||
- | ==== A2 ==== | ||
- | | ||
- | |||
- | === Programmablaufplan === | ||
- | |||
- | Erstelle ein Flussdiagramm anhand der folgenden Beschreibung. | ||
- | |||
- | <code java> | ||
- | // in der main Methode der App Klasse | ||
- | int gesucht=22; | ||
- | int treffer = liste.binaereSuche(gesucht); | ||
- | System.out.println(" | ||
- | </ | ||
- | |||
- | * Die Methode '' | ||
- | * Du führst Buch welcher Teil des Arrays zu durchsuchen ist und welcher Teil des Arrays nicht mehr in Frage kommt. wenn deine Methode startet, musst du das gesamte Array betrachten (kleinster Index '' | ||
- | |||
- | {{ : | ||
- | |||
- | * Jetzt musst du den Index des mittleren Elements finden, und prüfen, ob der Inhalt größer, kleiner oder gleich dem gesuchten Wert ist. | ||
- | |||
- | |||
- | <code java> | ||
- | int mitte = (oben+unten)/ | ||
- | </ | ||
- | |||
- | * Ist der Wert des Arrayelements **gleich** dem gesuchten Wert, wird der Indexwert mit '' | ||
- | * Wenn der gesuchte Wert **kleiner** ist als der Inhalt von '' | ||
- | <code java> | ||
- | if ( gesucht < daten[mitte]) { | ||
- | oben = mitte-1; | ||
- | } | ||
- | </ | ||
- | |||
- | {{ : | ||
- | |||
- | |||
- | * Sollte der gesuchte Wert **größer** sein als '' | ||
- | |||
- | <code java> | ||
- | if ( gesucht > daten[mitte]) { | ||
- | unten = mitte+1; | ||
- | } | ||
- | </ | ||
- | |||
- | * Das ganze muss wiederholt werden, solange der Suchbereich '' | ||
- | |||
- | === Implementiere die Methode im Programmgerüst und teste sie === | ||
- | |||
- | Hilfestellungen | ||
- | |||
- | |||
- | {{ : | ||