Advertisement
avr39ripe

SBU021BinarySearch

Aug 1st, 2020
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. void printArr(int arr[], int arrSize)
  4. {
  5.     for (int i{ 0 }; i < arrSize; ++i)
  6.     {
  7.         std::cout << arr[i] << ' ';
  8.     }
  9.     std::cout << '\n';
  10. }
  11.  
  12. void sortBuble(int arr[], int arrSize)
  13. {
  14.     int tmp{};
  15.     for (int head{ 0 }; head < arrSize; ++head)
  16.     {
  17.         for (int tail{ arrSize - 1 }; tail > head; --tail)
  18.         {
  19.             if (arr[tail] < arr[head])
  20.             {
  21.                 tmp = arr[tail];
  22.                 arr[tail] = arr[head];
  23.                 arr[head] = tmp;
  24.             }
  25.         }
  26.     }
  27. }
  28.  
  29. void randomizeArr(int arr[], int arrSize)
  30. {
  31.     for (int i{ 0 }; i < arrSize; ++i)
  32.     {
  33.         arr[i] = rand() % 101;
  34.     }
  35. }
  36.  
  37. int main()
  38. {
  39.     const int arrSize{ 100 };
  40.     int arr[arrSize];
  41.  
  42.     //int arr[arrSize]{ 6,1,4,2,8,9,11,3,2,1 };
  43.     //int arr[arrSize]{ 1,1,1,2,2,9,11,1,2,1 };
  44.     //int arr[arrSize]{ 1,2,3,4,5,6,7,8,9,10 };
  45.     //int arr[arrSize]{ 1,2,3,4,5,6,7,9,8,7 };
  46.     //int arr[arrSize]{ 10,9,8,7,6,5,4,3,2,1 };
  47.     //int arr[arrSize]{0};
  48.  
  49.     randomizeArr(arr, arrSize);
  50.     sortBuble(arr, arrSize);
  51.     printArr(arr, arrSize);
  52.  
  53.     int key{ 1 };
  54.    
  55.     int left{ 0 };
  56.     int right{ arrSize - 1 };
  57.     int mid{};
  58.  
  59.     std::cout << "Enter search key: ";
  60.     std::cin >> key;
  61.  
  62.     while (true)
  63.     {
  64.         std::cout << "Finding...";
  65.         mid = (left + right) / 2;
  66.  
  67.         if (key == arr[mid]) { std::cout << "Found! Index: " << mid << '\n'; break; };
  68.         if (key < arr[mid]) { right = mid - 1; std::cout << " left side\n"; };
  69.         if (key > arr[mid]) { left = mid + 1; std::cout << " right side\n"; };
  70.  
  71.         if (left > right) { std::cout << "Not found!\n"; break; }
  72.     }
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement