Fixed linearsearch (agai)

This commit is contained in:
VegOwOtenks 2024-09-22 22:25:40 +02:00
parent fe63781996
commit 840a29a59d
2 changed files with 28 additions and 19 deletions

View file

@ -1,19 +1,20 @@
add_subdirectory(./Scratchpad)
add_subdirectory(./allocator-interface)
add_subdirectory(./FixedBuffer)
add_subdirectory(./dynamicbuffer)
add_subdirectory(./FreeList)
add_subdirectory(./BinaryTree)
add_subdirectory(./hashmap)
add_subdirectory(./QuadTree)
add_subdirectory(./threading)
add_subdirectory(./ThreadPool)
add_subdirectory(./regex)
add_subdirectory(./utf8)
add_subdirectory(./StringView)
add_subdirectory(./allocator-interface)
add_subdirectory(./arraylist)
add_subdirectory(./argumentc)
add_subdirectory(./rand)
add_subdirectory(./siphash)
add_subdirectory(./pointers)
add_subdirectory(./dynamicarray)
add_subdirectory(./dynamicbuffer)
add_subdirectory(./hashmap)
add_subdirectory(./rand)
add_subdirectory(./utf8)
add_subdirectory(./pointers)
add_subdirectory(./StringView)
add_subdirectory(./ThreadPool)
add_subdirectory(./threading)
add_subdirectory(./FreeList)
add_subdirectory(./argumentc)
add_subdirectory(./Scratchpad)
add_subdirectory(./regex)
add_subdirectory(./QuadTree)
add_subdirectory(./BinaryTree)
add_subdirectory(./Subprocess)

View file

@ -257,17 +257,25 @@ size_t DynamicArray_FindFunctionLinear(DynamicArray* array, DynamicArrayLinearFi
size_t mid = bot + (top - bot) / 2;
int eval = -1;
while (bot != top) {
while (eval != 0 && mid != top && mid < array->reserved) {
void* current = DynamicArray_GetPointer(array, mid);
eval = function(current, xarg);
if (eval > 0) {
bot = mid + 1;
if (eval == 0) {
bot = top = mid;
} else if (eval < 0) {
top = mid - 1;
} else {
bot = top;
bot = mid + 1;
}
// TODO: Is there a bug with overlapping top and bot here?
mid = bot + (top - bot) / 2;
}
if (mid == top && mid < array->reserved) {
void* current = DynamicArray_GetPointer(array, mid);
eval = function(current, xarg);
}
if (eval != 0) {