Advertisement
daniil_mironoff

Lab 2.2 named Artemy Tarasova

May 13th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. #include <iostream> // Для ВЫВОДА (и ввода)
  2. #include "stdafx.h" // Библиотека для MVS
  3.  
  4. using namespace std;
  5.  
  6. int main() {
  7.     int size = 1000; // Размер массива (макс. знач минус 0.1)
  8.     float arr[1000]; // Массив
  9.     float value;     // Искомое значение
  10.    
  11.     // Заполнение массива
  12.     for (int i = 0; size > i; i++) {
  13.         arr[i] = i * 0.1;
  14.     }
  15.    
  16.     // Ввод искомого значения
  17.     cout << "Сгенерирован отсортированный массив от 0.0 до 99.9" << endl;
  18.     cout << "Введите искомое значение: ";
  19.     cin >> value;
  20.    
  21.     //  ПОСЛЕДОВАТЕЛЬНЫЙ ПОИСК
  22.     int count;
  23.     for (count = 1; size >= count; count++) {
  24.         if (arr[count - 1] == value) {
  25.             cout << "Искомое найдено под индексом " << count - 1 << endl;
  26.             break;
  27.         } else if (arr[count - 1] > value || size == count) {
  28.             cout << "Искомое не найдено" << endl;
  29.             break;
  30.         }
  31.     }
  32.    
  33.     cout << "Кол-во шагов ПОСЛЕДОВАТЕЛЬНОГО ПОИСКА: " << count << endl;
  34.    
  35.     //  БИНАРНЫЙ ПОИСК
  36.     count = 0;
  37.     int left = 0; // Левая граница (size - правая)
  38.     while (true) {
  39.         int midd = (left + size) / 2; // Индекс текущего элемента
  40.         count++;                      // Счетчик шагов
  41.        
  42.         if (arr[midd] > value) {
  43.             // Если текущее значение больше искомого
  44.             size = midd - 1;
  45.         } else if (arr[midd] < value) {
  46.             // Если текущее значение меньше искомого
  47.             left = midd + 1;
  48.         } else {
  49.             // Если найдено искомое
  50.             break;
  51.         }
  52.        
  53.         if (left > size) {
  54.             // Если не найдено искомое
  55.             break;
  56.         }
  57.     }
  58.    
  59.     cout << "Кол-во шагов БИНАРНОГО ПОИСКА: " << count << endl;
  60.    
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement