Advertisement
35657

Untitled

Apr 13th, 2024
710
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int binary_search(int* arr, int x, int left, int right) {
  7.  
  8.     if (left >= right) {
  9.         return -1;
  10.     }
  11.  
  12.     int mid = (left + right) / 2;
  13.  
  14.     if (arr[mid] == x) {
  15.         return mid;
  16.     }
  17.     else if (arr[mid] > x) {
  18.         return binary_search(arr, x, left, mid);
  19.     }
  20.     else {
  21.         return binary_search(arr, x, mid + 1, right);
  22.     }
  23. }
  24.  
  25.  
  26. // функция линейного поиска для сравнения
  27. int search(int* arr, int size, int x) {
  28.     for (int i = 0; i < size; i++) {
  29.         if (arr[i] == x) {
  30.             return i;
  31.         }
  32.     }
  33.     return -1;
  34. }
  35.  
  36. int main() {
  37.     setlocale(LC_ALL, "ru");
  38.  
  39.     const int size = 200000;
  40.  
  41.     int arr[size];
  42.  
  43.     for (int i = 0; i < size; i++) {
  44.         arr[i] = i;
  45.     }
  46.  
  47.     int index, x = 153879;
  48.  
  49.     int start_time = clock();
  50.  
  51.     for (int i = 0; i < 100000; i++) {
  52.         index = binary_search(arr, x, 0, size);
  53.     }
  54.  
  55.     int end_time = clock();
  56.  
  57.     cout << "index " << index << ", time " << end_time - start_time << " milliseconds" << endl;
  58.  
  59.     start_time = clock();
  60.  
  61.     for (int i = 0; i < 100000; i++) {
  62.         index = search(arr, size, x);
  63.     }
  64.    
  65.     end_time = clock();
  66.  
  67.     cout << "index " << index << ", time " << end_time - start_time << " milliseconds" << endl;
  68.  
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement