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 10:23] – 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 int binaereSuche(int zahl) { | ||
- | + | ===== Aufgaben: ===== | |
- | } | + | |
- | + | ==== A1 ==== | |
- | + | ||
- | + | ||
- | public void anzeigen() { | + | |
- | for (int i=0; i< anzahl; i++) { | + | |
- | | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | private int getZufallszahlOrdered(int basis, int grenze) | + | |
- | { | + | |
- | return (int)(2*(grenze-basis)/ | + | |
- | } | + | |
- | + | ||
- | } | + | |
- | + | ||
- | + | ||
- | /* App Klasse. Steuerklasse für unser Programm */ | + | |
- | public class App { | + | |
- | public static void main(String[] args) { | + | * Beschreibe die Funktion der privaten Methode '' |
- | | + | * Implementiere die Methode '' |
- | | + | ==== A2 ==== |
+ | Implementiere eine Methode '' | ||
- | } | + | === (1) Programmablaufplan === |
- | + | ||
- | } | + | |
- | + | ||
- | </ | + | |
- | ===== Aufgaben: ===== | + | Erstelle ein Flussdiagramm anhand |
- | + | ||
- | ==== A1 ==== | + | |
- | + | ||
- | Probiere das Programm aus. Beschreibe, was es macht, verändere auch den Parameter '' | + | |
- | + | ||
- | ==== A2 ==== | + | |
- | | + | |
<code java> | <code java> | ||
- | // in der main Methode der App Klasse | + | public |
- | | + | |
- | int treffer = liste.binaereSuche(gesucht); | + | |
- | System.out.println(" | + | |
</ | </ | ||
- | * Die Methode '' | + | * 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 '' | + | * 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 '' |
{{ : | {{ : | ||
Zeile 95: | Zeile 35: | ||
</ | </ | ||
- | * Ist der Wert des Arrayelements **gleich** dem gesuchten Wert, wird der Index mit '' | + | * Ist der Wert des Arrayelements **gleich** dem gesuchten Wert, wird der Indexwert |
- | * Wenn der gesuchte Wert **kleiner** ist als der Inhalt von '' | + | * Wenn der gesuchte Wert **kleiner** ist als der Inhalt von '' |
<code java> | <code java> | ||
if ( gesucht < daten[mitte]) { | if ( gesucht < daten[mitte]) { | ||
- | oben = mitte; | + | oben = mitte-1; |
} | } | ||
</ | </ | ||
Zeile 106: | Zeile 46: | ||
- | * Sollte der gesuchte Wert **größer** sein als '' | + | * Sollte der gesuchte Wert **größer** sein als '' |
<code java> | <code java> | ||
if ( gesucht > daten[mitte]) { | if ( gesucht > daten[mitte]) { | ||
- | unten = mitte; | + | unten = mitte+1; |
} | } | ||
</ | </ | ||
- | * Das ganze muss wiederholt werden, solange der Suchbereich '' | + | * 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; | ||
+ | } | ||
+ | </ | ||
+ | ++++ |