-
Notifications
You must be signed in to change notification settings - Fork 103
Open
Description
The bisection search used in this line returns the index closest and smaller than the query rather than the one closest to it.
See example below
timed_data = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
query_timestamp_ns = 2.9
# If this is safe we perform the Bisection search
start = 0
end = len(timed_data) - 1
while start < end:
mid = (start + end) // 2
mid_timestamp = timed_data[mid]
if mid_timestamp == query_timestamp_ns:
start = mid
break
if mid_timestamp < query_timestamp_ns:
start = mid + 1
else:
end = mid - 1
print(start, timed_data[start]) # it prints 0 1timed_data = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
query_timestamp_ns = 1.1
# If this is safe we perform the Bisection search
start = 0
end = len(timed_data) - 1
while start < end:
mid = (start + end) // 2
mid_timestamp = timed_data[mid]
if mid_timestamp == query_timestamp_ns:
start = mid
break
if mid_timestamp < query_timestamp_ns:
start = mid + 1
else:
end = mid - 1
print(start, timed_data[start]) # This also prints 0 1Metadata
Metadata
Assignees
Labels
No labels