Advertisement
Valeria_Fadeeva

bynary_search c

Aug 1st, 2022 (edited)
1,119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.14 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4. #include <time.h>
  5.  
  6. int binary_search(uint32_t arr[], size_t len, uint32_t item)
  7. {
  8.     uint32_t high = len - 1;
  9.     uint32_t low = 0, mid = 0;
  10.     while (low <= high) {
  11.         uint32_t mid = ((high - low) / 2) + low;
  12.         uint32_t value = arr[mid];
  13.  
  14.         if (value == item) {
  15.             return mid;
  16.         }
  17.         else if (value > item) {
  18.             high = mid - 1;
  19.             continue;
  20.         }
  21.         else if (value < item) {
  22.             low = mid + 1;
  23.             continue;
  24.         }
  25.     }
  26.  
  27.     return -1;
  28. }
  29.  
  30. int main(int argc, char* argv[])
  31. {
  32.     (void)argc;
  33.     (void)argv;
  34.  
  35.     time_t start, end;
  36.  
  37.     uint32_t max_item_count = 1000000000;
  38.  
  39.     uint32_t *arr = (uint32_t*) malloc(max_item_count * sizeof(uint32_t));
  40.  
  41.     for (uint32_t i = 0; i < max_item_count; i++) {
  42.         arr[i] = i;
  43.     }
  44.  
  45.     uint32_t item = 5;
  46.  
  47.     //uint32_t len = sizeof arr / sizeof arr[0];
  48.     uint32_t len = max_item_count;
  49.  
  50.     start = time(NULL);
  51.     binary_search(arr, len, item);
  52.     end = time(NULL);
  53.  
  54.     free(arr);
  55.  
  56.     printf("%f\n", difftime(end, start));
  57.  
  58.     return 0;
  59. }
  60.  
  61.  
  62. gcc binary_search.c -o binary_search && time ./binary_search
  63. 0.000000
  64.  
  65. real    0m2,926s
  66. user    0m2,232s
  67. sys     0m0,694s
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement