|
Java-API--Dokumentation | ||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||
java.lang.ObjectLoesung55
class Loesung55
Loesungsvorschlag fuer Aufgabe 5-5: Fibonaccisuche.
| Field Summary | |
|---|---|
(package private) static int[] |
FIBONACCI
Die Fibonaccifolge F, angepasst fuer die Fibonaccisuche. |
| Constructor Summary | |
|---|---|
Loesung55()
|
|
| Method Summary | |
|---|---|
(package private) int |
find(int[] array,
int key)
Durchsucht einen Array mit der Fibonaccisuche. |
(package private) int |
find(int[] array,
int key,
int leftIndex,
int rightIndex,
int fibonacciIndex)
Durchsucht einen Array mit der Fibonaccisuche. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
static final int[] FIBONACCI
int;
dies sind alle Fibonaccizahlen kleiner oder gleich
F46 = 1836311903.
Im Allgemeinen ist die Fibonaccifolge wie folgt definiert:
FIBONACCI[n] = (n == 0 ? 0 : (n == 1 ? 1 :
(FIBONACCI[n - 2] + FIBONACCI[n - 1])))
Um klaren Code in der Rekursion zu haben, wird abweichend davon
FIBONACCI[0] = 1 definiert; dies spart eine eigene
if-Bedingung fuer sehr kurze Teil-Arrays ein. Auch
wird FIBONACCI[47] = Integer.MAX_VALUE definiert,
um die Korrektheit des Algorithmus auch bei langen Arrays
herzustellen.
| Constructor Detail |
|---|
Loesung55()
| Method Detail |
|---|
int find(int[] array,
int key)
Fuer eine Fibonaccisuche muss der Array sortiert sein.
array - das zu durchsuchende Arraykey - den zu suchenden Wert
array, das
den Wert key hat
KeyNotFoundException - falls der Array den gesuchten Wert
nicht enthaelt
NullPointerException - falls array == nullArrays.sort(int[])
int find(int[] array,
int key,
int leftIndex,
int rightIndex,
int fibonacciIndex)
Fuer eine Fibonaccisuche muss der Array sortiert sein.
Damit diese Methode korrekt ist, muessen beim Aufruf folgende Vorbedingungen erfuellt sein:
array enthaelt den Suchraum, mit
array.length > 0array.length > leftIndex >=
0rightIndex - leftIndex + 1 ==
FIBONACCI[fibonacciIndex]FIBONACCI enthaelt die Fibonaccifolge, mit
FIBONACCI[0] == 1Das Verhalten dieser Methode bei Nichterfuellung dieser Vorbedingungen ist nicht definiert.
array - das zu durchsuchende Arraykey - den zu suchenden WertleftIndex - der Index, der die untere Grenze des zu
durchsuchenden Bereichs im Array darstellt (einschliesslich)rightIndex - der Index, der die obere Grenze des zu
durchsuchenden Bereichs im Array darstellt (einschliesslich);
der Abstand zu leftIndex muss in jedem Fall eine
Fibonaccizahl seinfibonacciIndex - der Index derjenigen Fibonaccizahl, die
dem Abstand zwischen leftIndex und
rightIndex entspricht
array, das
den Wert key hat
KeyNotFoundException - falls der Array den gesuchten Wert
nicht enthaelt
ArrayIndexOutOfBoundsException - falls
array.length == 0
NullPointerException - falls array == nullArrays.sort(int[])
|
Java-API--Dokumentation | ||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||