Перейти к содержанию

линейный поиск в массиве с выводом номера числа.


Рекомендуемые сообщения

в программе нужно реализовать сначало бинарный, затем линейный поиск с выводом количества операций.мой код:


# include
# include
# include
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
const int n=10;
int X[n],i,h,j;
cout << "массив задается " << endl;
srand(time(NULL));
for(i=0;i {
X[i]=rand()%20+1;
}
for (i=0;i < n;i++)
{
for (j=n-1;j>=i;j--)
if(X[j-1] > X[j])
{
h=X[j-1];
X[j-1]=X[j];
X[j]=h;
}
}
for (i=0; i cout << X[i] << " ";
cout << endl;
int l=0,r=n-1,m =(l+r)/2,key,s=1;
cout << "введите элемент" << endl;
cin >> key;
while((l<=r) && (X[m] != key))
{
if (key > X[m])
l=m+1;
else
r=m-1;
m=(l+r)/2;
s++;
}
if (X[m] == key)
cout << "номер равен " << m << endl;
if (X[m] != key)
cout << "таких элементов нет" << endl;
cout << "количество операций = " << s << endl;
int keys,u=0;
cout << "введите новый элемент" << endl;
cin >> keys;
for(i=0;i if (X[i]==keys)
cout << "номер элемента " << X[m] << endl;
system("pause >> void");
return 0;
}
# include 

здесь работает бинарный поиск, но не могу реализовать линейный с выводом количества операций и номера элемента.проблема начинается вот отсюда:


cout << "введите новый элемент" << endl;
cin >> keys;
for(i=0;i if (X[i]==keys)
cout << "номер элемента " << X[m] << endl;
int keys,u=0;

Ссылка на комментарий

вообще есть такое слово, рефракторинг.

Вот такой алкоритм действий:

брутально пишешь код

если не работает то делаешь рефракторинг

если все равно не работает

отправляешь код сюда,

чесно очень сложно читать не причесанный код, особенно когла отладчик открыть нет ни возможности ни желания.

а так на вскидку X[m] помоему у тебя из бинарного в линейный поиск затисался

по секрету номер элемента будет i

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...