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:36] – 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. | ||
- | public void anzeigen() { | + | <code java> |
- | for (int i=0; i< anzahl; i++) { | + | |
- | | + | </code> |
- | } | + | |
- | } | + | |
- | + | ||
- | private | + | |
- | { | + | |
- | return (int)(2*(grenze-basis)/anzahl*Math.random()+1) + basis; | + | |
- | } | + | |
- | + | ||
- | } | + | |
+ | * 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 '' | ||
- | /* App Klasse. Steuerklasse für unser Programm */ | + | {{ : |
- | public class App { | + | |
- | + | ||
- | public static void main(String[] args) { | + | |
- | BinarySearch liste = new BinarySearch(1000); | + | |
- | liste.anzeigen(); | + | |
+ | * 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; | ||
} | } | ||
- | |||
</ | </ | ||
- | ===== Aufgaben: ===== | + | {{ :faecher: |
- | ==== A1 ==== | + | |
+ | * Sollte der gesuchte Wert **größer** sein als '' | ||
+ | |||
+ | <code java> | ||
+ | if ( gesucht > daten[mitte]) { | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | * Das ganze muss wiederholt werden, solange der Suchbereich '' | ||
+ | |||
+ | === (2) Implementation | ||
+ | |||
+ | Implementiere die Methode wie entworfen und teste sie. | ||
+ | |||
+ | === Hilfestellungen | ||
- | Probiere das Programm aus. Beschreibe, was es macht, verändere auch den Parameter '' | + | |
+ | ++++ 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; | ||
+ | } | ||
+ | </ | ||
+ | ++++ |