Вопрос задан 28.06.2023 в 04:52. Предмет Информатика. Спрашивает Лис Полина.

Двоичный (бинарный) поиск С++. Код плс

0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Майор Руслан.

Ответ:

#include <iostream>

using namespace std;

// функция с алгоритмом двоичного поиска  

int Search_Binary (int arr[], int left, int right, int key)

{

int midd = 0;

while (1)

{

 midd = (left + right) / 2;

 

 if (key < arr[midd])       // если искомое меньше значения в ячейке

  right = midd - 1;      // смещаем правую границу поиска

 else if (key > arr[midd])  // если искомое больше значения в ячейке

  left = midd + 1;    // смещаем левую границу поиска

 else                       // иначе (значения равны)

  return midd;           // функция возвращает индекс ячейки

 if (left > right)          // если границы сомкнулись  

  return -1;

}

}

int main()

{

setlocale (LC_ALL, "rus");

 

const int SIZE = 12;

int array[SIZE] = {};

int key = 0;

int index = 0; // индекс ячейки с искомым значением

for (int i = 0; i < SIZE; i++) // заполняем и показываем массив

{

 array[i] = i + 1;

 cout << array[i] << " | ";

}

 

cout << "\n\nВведите любое число: ";

cin >> key;

 

index = Search_Binary (array, 0, SIZE, key);

if (index >= 0)  

 cout << "Указанное число находится в ячейке с индексом: " << index << "\n\n";

else

 cout << "В массиве нет такого числа!\n\n";

 

return 0;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, вот пример реализации двоичного (бинарного) поиска на C++:

cpp
#include <iostream> #include <vector> int binarySearch(const std::vector<int>& arr, int target) { int left = 0; int right = arr.size() - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) { return mid; // Элемент найден, возвращаем его индекс } else if (arr[mid] < target) { left = mid + 1; // Искомый элемент находится в правой половине } else { right = mid - 1; // Искомый элемент находится в левой половине } } return -1; // Элемент не найден } int main() { std::vector<int> arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int target = 7; int result = binarySearch(arr, target); if (result != -1) { std::cout << "Элемент " << target << " найден по индексу " << result << std::endl; } else { std::cout << "Элемент " << target << " не найден" << std::endl; } return 0; }

Этот код реализует двоичный поиск в упорядоченном массиве arr и ищет значение target. Если элемент найден, функция binarySearch возвращает его индекс, иначе возвращает -1. В приведенном примере мы ищем значение 7 в упорядоченном массиве от 1 до 10. Вы можете изменить arr и target в соответствии с вашими потребностями.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос