Cpp/BinarySearch.cpp

72 lines
2.1 KiB
C++

#include<iostream>
int main(){
int size=0;
int elements=0;
int target=0;
int middle=0;
bool found = false;
while(true){
std::cout<<"Введите размер вашего массива: ";
if(!(std::cin>>size)){
std::cin.clear();
std::cin.ignore(1000,'\n');
std::cerr<<"Ошибка типа данных. Введите число: "<<std::endl;
continue;
}
if(size<=0){
std::cerr<<"Ошибка. Массив должен быть больше нуля. Повторите попытку: ";
continue;
}
break;
}
std::cout<<"Размер вашего массива: "<<size<<std::endl;
std::cout<<"Введите элементы массива: ";
int* arr = new int[size];
int left=0;
int right = size -1;
for(int i=0;i<size;i++){
std::cin>>elements;
arr[i] = elements;
std::cout<<i<<")"<<elements<<std::endl;
}
std::cout<<"Ваши элементы: "<<std::endl;
for (int i = 0; i < size; i++) {
std::cout << arr[i]<<" ";
}
std::cout<<"Введите элемент для поиска: ";
std::cin>>target;
while(left<=right){
middle=left+(right-left)/2;
if(arr[middle]==target){
found = true;
std::cout<<"Элемент найден: "<<target<<std::endl;
std::cout<<"Индекс элемента: "<<middle<<std::endl;
break;
}
else if(arr[middle]<target){
left=middle + 1;
}
else{
right=middle-1;
}
}
delete[] arr;
if(!found){
std::cerr<<"Вашего элемента нет в массиве";
return 1;
}
return 0;
}