Есть задание найти значение в массиве и вывести его. Для этого я использую бинарный поиск, но не могу понять почему выводит ошибку. Ошибка чтения в if (mass[mid] == key).
#include <iostream>
#include <fstream>
#include <chrono>
#include <iomanip>
#include <algorithm>
using namespace std;
//cама функция
int Search_Binary(int mass[], int left, int right, int key)
{
if (right >= left) {
int mid = left + (right - left) / 2;
if (mass[mid] == key)
return mid;
if (mass[mid] > key)
return Search_Binary(mass, left, mid - 1, key);
return Search_Binary(mass, mid + 1, right, key);
}
return -1;
}
int main()
{
setlocale(LC_ALL, "Rus");
const int size = 50000;
int *mass = new int[size];
//число которое которе нужно найти
int key = 21863;
ifstream fil;
fil.open("F://serch//50k.txt");
for (int i = 0; i < size; i++) {
fil >> mass[i];
}
//засчечение начало времени
auto start = chrono::high_resolution_clock::now();
double answer;
//сортировка массива из файла
sort(mass, mass + size);
//вызов функции и присваивание
int left = mass[1];
int right = mass[size - 1];
Search_Binary(mass,left,right,key);
//Засечение конца времени
auto end = chrono::high_resolution_clock::now();
answer = chrono::duration_cast<chrono::nanoseconds>(end - start).count();
answer *= 1e-9;
cout << "Для поиска понадобилось: " << fixed << answer << setprecision(10) << endl;
system("pause");
return 0;
}
Что это за ерунда:
int left = mass[1];
int right = mass[size - 1];
?
Согласно вашей задумке, как я ее понял, left
и right
должны быть индексами элементов массива. У вас же они внезапно инициализируются значениями элементов массива.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Задача в следующем, мне нужно написать прогу, которая отправляла бы на указанные адреса почт моих контрагентов письма с вложениями (не спам...
извиняюсь за нубский вопрос: при обьявлении и инициализации переменных - как происходит восприятие указателем или онлайн-компилятором их адреса?...
Реализую библиотеку по обработки данных с устройства, в последствии количество устройств будет наращиваться и я пишу гибкое решениеУ меня...