master > master: code - designfehler mit `index == -1` korrigiert

This commit is contained in:
RD 2021-10-25 11:27:33 +02:00
parent 3f3ccf1059
commit 8ddb4fa427
2 changed files with 9 additions and 3 deletions

View File

@ -58,4 +58,6 @@ def BinarySearch(L: List[int], x: int) -> int:
else: # x > L[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);
return (m + 1) + index; # NOTE: muss Indexwert kompensieren
if index >= 0:
index += (m + 1); # NOTE: muss Indexwert kompensieren
return index;

View File

@ -56,7 +56,9 @@ def JumpSearchLinear(L: List[int], x: int, m: int) -> int:
if x < elementAfterBlock:
logDebug('Element muss sich im Block [{i0}, {i1}) befinden.'.format(i0 = i*m, i1 = (i+1)*m));
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));
i += 1;
return -1;
@ -85,7 +87,9 @@ def JumpSearchExponentiell(L: List[int], x: int) -> int:
if x < elementAfterBlock:
logDebug('Element muss sich im Block [{i0}, {i1}) befinden.'.format(i0 = i0, i1 = i1));
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));
i0 = i1;
i1 *= 2;