Получение неожиданного вывода только для одного входа в двоичном поиске. Когда я ввожу {1,2,3,4,5} в качестве ввода в массив в программе бинарного поиска, он показывает, что элемент отсутствует только для ввода '2 ', даже если элемент присутствует. Попытка кодовых блоков.
Я пытался отслеживать код в итерации, и я не понимаю, почему это не работает, и если значение переменной (pos - это мой случай) меняется или нет.
#include <iostream>
using namespace std;
int main()
{
int last,fin,beg=0,mid,pos=-1,i,*a;
cout<<"Enter the size of array: ";
cin>>last;
a=new int[last];
cout<<"Enter the elements in array"<<endl;
for(i=0;i<last;i++)
{
cin>>a[i];
}
cout<<endl<<"Enter the element you want to find: ";
cin>>fin;
for(i=beg;i<=last;i++)
{
mid=(beg+last)/2;
if(a[mid]==fin)
{
pos=mid;
}
else if(a[mid]>fin)
{
last=mid-1;
}
else
{
beg=mid+1;
}
}
if(pos==-1)
{
cout<<"Element not present in array"<<endl;
}
else
{
cout<<"element found "<<fin<<" at "<<pos+1<<" position"<<endl;
}
delete a;
return 0;
}
Я ожидаю, что вывод 2 должен быть: элемент найден 2 в позиции 2, когда я введу размер (переменная last) как 5 и элементы как 1,2,3,4,5. Я получаю вывод: Элемент отсутствует в массиве.