Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2010, 17:20   #1
nhr
Пользователь
 
Регистрация: 11.12.2010
Сообщений: 25
Вопрос бинарный поиск не работает

Ребят, написал, обрадовался, а бинарный поиск не работает, хотя если убрать сортировку все работает



#include "stdafx.h"
#include<iostream>
#include "conio.h"
#include <stdlib.h>
using namespace std;

int main(int argc, char* argv[])
{setlocale(LC_ALL,".1251");
const int MAX_SIZE=100;
int x[MAX_SIZE];
int i,n;
cout << "Введите число элементов массива:\n";
cin >> n;
for (int i=0; i<n; ++i ){
x[i]=rand()%100-50 ;
cout<<x[i] << " ";
}
cout<<"\n"<<"удаляем максимальный элемент:\n";
int max = x[0];
int M;
for (int i=0; i<n; ++i ){
if (max<x[i]){
max=x[i];
M=i;
}
}
for (int i= M; i<n; ++i)
x[i]=x[i+1];
n-=1;
for (int i=0; i<n; ++i)
cout<<x[i]<<" ";

cout<<"\n введите количество элементов, добавляемых в начало массива:\n";
cin>>M;
for(i=n;i>=0;--i)
x[i+M]=x[i];
for(int i=0;i<M;++i)
x[i]=rand()%100-50;
for(int i=0;i<n+M;++i)
cout<<x[i]<<" ";

n+=M;
cout<<"\n переворачиваем массив:\n";
int k;
for (i=0;i<n/2;++i)
{
k=x[i];
x[i]=x[n-1-i];
x[n-1-i]=k;
}
for(int i=0;i<n;++i)
cout<<x[i]<<" ";

cout<<"\n первый чётный элемент последовательности:\n";
int l,d;
for(i=0;i<n/2;++i){
if (x[i]%2==0){
l=x[i];
d=l;
cout<<d<<"\n количество сравнений:\n";
l=i+1;
cout<<l<<" ";
break;}}


cout<<"\n сортируем массив методом простого обмена:\n";

int y;
int A;
for(i=1;i<n;++i){
for(y=n-1;y>=i;--y){
if(x[y-1]>x[y]){
A=x[y-1];
x[y-1]=x[y];
x[y]=A;}}}
for(int i=0;i<n;++i)
cout<<x[i]<<" ";

cout<<"\n находим первый чётный элемент бинарным поиском:\n ";
l=0;

int first=0;
int last=n-1;
while (first<last){
int sr=(first+last)/2;
if(x[sr]%2){
last=sr;
l++;}
else{
first=sr+1;
l++;}}
if(x[last]==d){
cout<<d<<" "<<"\nчисло сравнений:\n"<<l<<"\nнайден на месте:\n"<<last+1;}
getch();
return 0;}

Последний раз редактировалось nhr; 14.12.2010 в 17:36.
nhr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[B]Не работает бинарный поиск![/B] sabaton Общие вопросы C/C++ 2 21.09.2010 20:51
Бинарный поиск CraZZZy-GameRRR Общие вопросы Delphi 8 25.05.2010 14:57
Бинарный поиск 0IceCube0 Паскаль, Turbo Pascal, PascalABC.NET 1 13.04.2010 15:52
Бинарный поиск Gendalf Помощь студентам 1 07.07.2007 22:09