master > master: code - designfehler mit index == -1
korrigiert
This commit is contained in:
parent
3f3ccf1059
commit
8ddb4fa427
@ -58,4 +58,6 @@ def BinarySearch(L: List[int], x: int) -> int:
|
|||||||
else: # x > L[m]
|
else: # x > L[m]
|
||||||
logDebug('Suche in L[m+1], L[m+2], ..., L[len(L)-1] fortsetzen, m = {}.'.format(m));
|
logDebug('Suche in L[m+1], L[m+2], ..., L[len(L)-1] fortsetzen, m = {}.'.format(m));
|
||||||
index = BinarySearch(L=L[m+1:], x=x);
|
index = BinarySearch(L=L[m+1:], x=x);
|
||||||
return (m + 1) + index; # NOTE: muss Indexwert kompensieren
|
if index >= 0:
|
||||||
|
index += (m + 1); # NOTE: muss Indexwert kompensieren
|
||||||
|
return index;
|
||||||
|
@ -56,7 +56,9 @@ def JumpSearchLinear(L: List[int], x: int, m: int) -> int:
|
|||||||
if x < elementAfterBlock:
|
if x < elementAfterBlock:
|
||||||
logDebug('Element muss sich im Block [{i0}, {i1}) befinden.'.format(i0 = i*m, i1 = (i+1)*m));
|
logDebug('Element muss sich im Block [{i0}, {i1}) befinden.'.format(i0 = i*m, i1 = (i+1)*m));
|
||||||
index = SequentialSearch(L=block, x=x);
|
index = SequentialSearch(L=block, x=x);
|
||||||
return offset + index; # NOTE: muss wegen Offset kompensieren
|
if index >= 0:
|
||||||
|
index += offset; # NOTE: muss wegen Offset kompensieren
|
||||||
|
return index;
|
||||||
logDebug('Element befindet sich nicht im im Block [{i0}, {i1}) befinden.'.format(i0 = i*m, i1 = (i+1)*m));
|
logDebug('Element befindet sich nicht im im Block [{i0}, {i1}) befinden.'.format(i0 = i*m, i1 = (i+1)*m));
|
||||||
i += 1;
|
i += 1;
|
||||||
return -1;
|
return -1;
|
||||||
@ -85,7 +87,9 @@ def JumpSearchExponentiell(L: List[int], x: int) -> int:
|
|||||||
if x < elementAfterBlock:
|
if x < elementAfterBlock:
|
||||||
logDebug('Element muss sich im Block [{i0}, {i1}) befinden.'.format(i0 = i0, i1 = i1));
|
logDebug('Element muss sich im Block [{i0}, {i1}) befinden.'.format(i0 = i0, i1 = i1));
|
||||||
index = SequentialSearch(L=block, x=x);
|
index = SequentialSearch(L=block, x=x);
|
||||||
return i0 + index; # NOTE: muss wegen Offset kompensieren
|
if index >= 0:
|
||||||
|
index += i0; # NOTE: muss wegen Offset kompensieren
|
||||||
|
return index;
|
||||||
logDebug('Element befindet sich nicht im Block [{i0}, {i1}) befinden.'.format(i0 = i0, i1 = i1));
|
logDebug('Element befindet sich nicht im Block [{i0}, {i1}) befinden.'.format(i0 = i0, i1 = i1));
|
||||||
i0 = i1;
|
i0 = i1;
|
||||||
i1 *= 2;
|
i1 *= 2;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user