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 [02.07.2020 09:34] – 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 | + | Arbeite mit dem folgenden |
- | <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] = getZufallszahlOrdered(daten[indexvorher], | ||
- | } | ||
- | } | ||
- | |||
- | | ||
- | public void binaereSuche(int zahl) { | ||
+ | ===== 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> |
- | for (int i=0; i< anzahl; i++) { | + | |
- | System.out.println( i + " -> " + daten[i] + " "); | + | </code> |
- | } | + | |
- | } | + | * 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 |
- | | + | |
- | { | + | {{ : |
- | | + | |
- | } | + | * 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> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | | ||
+ | * Wenn der gesuchte Wert **kleiner** ist als der Inhalt von '' | ||
+ | <code java> | ||
+ | if ( gesucht < daten[mitte]) { | ||
+ | oben = mitte-1; | ||
} | } | ||
+ | </ | ||
+ | {{ : | ||
- | /* App Klasse. Steuerklasse für unser Programm | + | |
- | public class App { | + | |
+ | |||
+ | <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 === | ||
- | public static void main(String[] args) { | ||
- | BinarySearch liste = new BinarySearch(1000); | ||
- | liste.anzeigen(); | ||
+ | ++++ 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; | ||
} | } | ||
- | |||
- | } | ||
- | |||
</ | </ | ||
+ | ++++ |