Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:binaere_suche:binsuchprogramm:start [26.06.2020 15:30] – sbel | faecher:informatik:oberstufe:algorithmen:binaere_suche:binsuchprogramm:start [04.10.2021 17:04] (aktuell) – [Ein Programm zum Zahlenraten] sbel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Ein Programm | + | ====== Ein Programm |
+ | |||
+ | Arbeite mit dem folgenden BlueJ Projekt: [[https:// | ||
+ | |||
+ | |||
+ | ===== Aufgaben: ===== | ||
+ | |||
+ | ==== A1 ==== | ||
+ | |||
+ | * Beschreibe die Funktion der privaten Methode '' | ||
+ | * Implementiere die Methode '' | ||
+ | ==== A2 ==== | ||
+ | |||
+ | Implementiere eine Methode '' | ||
+ | |||
+ | === (1) Programmablaufplan === | ||
+ | |||
+ | Erstelle ein Flussdiagramm anhand der folgenden Beschreibung. | ||
+ | |||
+ | <code java> | ||
+ | public int binaereSuche(int needle) | ||
+ | </ | ||
+ | |||
+ | * 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 '' | ||
+ | |||
+ | === (2) Implementation === | ||
+ | |||
+ | Implementiere die Methode wie entworfen und teste sie. | ||
+ | |||
+ | === Hilfestellungen === | ||
+ | |||
+ | |||
+ | ++++ Möglicher PAP | | ||
+ | {{ : | ||
+ | ++++ | ||
+ | |||
+ | ++++ Mögliches Methodengerüst | | ||
+ | <code java> | ||
+ | public int binarySearch(int needle) { | ||
+ | int minindex | ||
+ | int maxindex | ||
+ | int middleindex | ||
+ | int middlevalue | ||
+ | | ||
+ | while ( ) { | ||
+ | | ||
+ | if ( ) { | ||
+ | return middleindex; | ||
+ | } | ||
+ | | ||
+ | |||
+ | if ( ) { | ||
+ | | ||
+ | } else { | ||
+ | | ||
+ | } | ||
+ | | ||
+ | middleindex = | ||
+ | middlevalue = | ||
+ | | ||
+ | } | ||
+ | | ||
+ | return -1; | ||
+ | } | ||
+ | </ | ||
+ | ++++ |