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


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

Ответ:
#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;
}



Конечно, вот пример реализации двоичного (бинарного) поиска на 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
в соответствии с вашими потребностями.


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





Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili