|
Java-API--Dokumentation | ||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object Loesung55
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 == null
Arrays.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 > 0
array.length
> leftIndex
>=
0
rightIndex - leftIndex + 1 ==
FIBONACCI[fibonacciIndex]
FIBONACCI
enthaelt die Fibonaccifolge, mit
FIBONACCI[0] == 1
Das 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 == null
Arrays.sort(int[])
|
Java-API--Dokumentation | ||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |