solutions/The Last Algorithms Course .../4. Binary Search.c

49 lines
1.1 KiB
C
Raw Permalink Normal View History

2024-04-21 16:14:07 -04:00
#include "stdio.h"
#define SIZE 4096
2024-04-21 16:33:21 -04:00
// The complexity is O(log n)
// because we always half the amount
// like N/2 -> N/4 -> N/8 ... N/(2^k) which equals log n
2024-04-21 16:14:07 -04:00
int binary_search(int array[], int size, int offset, int value)
{
int pivot = size / 2;
int current_value = array[offset + pivot];
printf("At %d\n", offset + pivot);
if (current_value == value)
{
return 1;
}
if (pivot > 0)
{
if (current_value > value)
return binary_search(array, pivot, offset, value);
else
return binary_search(array, pivot, offset + pivot, value);
}
return 0;
}
int main()
{
int array[SIZE];
for (int i = 0; i < SIZE; ++i)
array[i] = i;
printf("1 if found: %d\n", binary_search(array, SIZE, 0, 5243));
printf("1 if found: %d\n", binary_search(array, SIZE, 0, 1));
printf("1 if found: %d\n", binary_search(array, SIZE, 0, 1044));
// for (int i = 0; i < SIZE; ++i)
// if (!binary_search(array, SIZE, 0, i))
// printf("YOU FUCKED UP!!! at index %d\n", i);
printf("1 if found: %d\n", binary_search(array, SIZE, 0, SIZE));
array[14] = 13;
printf("1 if found: %d\n", binary_search(array, SIZE, 0, 14));
}