Загрузить файлы в «/»
This commit is contained in:
parent
7ade2b58bd
commit
3cdaf150e1
72
BinarySearch.cpp
Normal file
72
BinarySearch.cpp
Normal file
@ -0,0 +1,72 @@
|
||||
#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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user