Advertisement
I_LIKE_COFFEE

Doubling search

Oct 14th, 2019
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.89 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <iso646.h>
  4. #include <malloc.h>
  5.  
  6. int main(){
  7.     int n = 0, targed = 0, first = 0, last = 0,  middle = 0, index = 1;
  8.     printf("Input count: \n");
  9.     scanf("%d", &n);
  10.  
  11.     int* arr = (int*)malloc(n * sizeof(int));
  12.     for (int i = 0; i < n; i++)
  13.         scanf("%d", &arr[i]);
  14.     printf("Mas: \n");
  15.     for (int i = 0; i < n; i++)
  16.         printf("%d ", arr[i]);
  17.     printf("\nInput target: \n");
  18.     scanf("%d", &targed);
  19.  
  20.     while (arr[index] < targed)
  21.         index *= 2;
  22.    
  23.  
  24.     first = index / 2;
  25.     last = index;
  26.     middle = (first + last) / 2;
  27.     while (first <= last){
  28.         if (arr[middle] == targed){
  29.             printf("El has index: %d", middle + 1);
  30.             break;
  31.         }
  32.         else if (arr[middle] > targed)
  33.             last = middle - 1;
  34.         else if (arr[middle] < targed)
  35.             first = middle + 1;
  36.         middle = (first + last) / 2;
  37.     }
  38.  
  39.     if (first > last)
  40.         printf("Not found el");
  41.  
  42.     return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement