Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
iYoung
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 24
#1

Не работает функция бинарного поиска - C++

14.06.2010, 14:27. Просмотров 1082. Ответов 4

Добрый день , возникла проблема с бинарным поиском . Я его просто нашел в интернете и вставил в программу не много отредактировав . Вобщем бинарный поиск не работает , прошу помочь . Спасибо


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include<conio.h>
 
void BSort (int* A,int N)
{//Puzirkovii metod
int temp;
 for(int i=0; i<N-1; i++)
 for(int j=0; j<N-1-i; j++)
  if(A[j]>A[j+1])
   {
     temp=A[j];
     A[j]=A[j+1];
     A[j+1]=temp;
    }
}
 
void PrArr (int* A,int N)
{//Vivod elementov massiva
for(int i = 0; i < N; i++)
 printf("%d ", A[i]);
 printf("\n");
};
 
int BinSearch(int* A, int N, int a)
 {
  int x, l, p, centr;
  //Binarnii poisk
 
  l=0;
  p=N;
  do {
      centr=(l+p)/2;
      if (a<=A[centr]) p=centr;
      if (a>A[centr]) l=centr+1;
     }
  while (l!=p);
  if (A[p]==a) return p;
    else return -1;
 };
 
int main(void)
{
int N,A[100],i,a;
printf("Input size of array: \nn = ");
scanf("%d", &N);
srand((unsigned)time(NULL));
for(i = 0; i < N; i++)
A[i] = (int)(rand() % (N+1));
printf("Vvedennii massiv: \n");
PrArr(A, N);
BSort(A,N);
PrArr (A,N);
printf("\nVvedite chislo dlya poiska: \nN = ");
scanf("%d");
int ix = BinSearch(A,N,a);
 if (ix==-1) printf("\nElement ne naiden\n ");
 else printf("\nIndex elementa\n",ix);
delete [] A;
system ("pause");
getch();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2010, 14:27
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не работает функция бинарного поиска (C++):

Не работает функция поиска по имени - возвращает значение 16 - C++
столкнулся с проблемой не работает код, сижу над ним уже день третий, не работает функция поиска по имени, кто может помогите, заранее...

Структура "Штраф". Функция поиска криво работает - C++
Не работает функция poisk(); Переписать в новый файл информацию о штрафах, размер которого и дата вводятся с клавиатуры. ...

Сложность бинарного поиска - C++
Добрый вечер, решал данную задачу: Девочка загадала число от 1 до N. За какое наименьшее количество вопросов вида «Загаданное тобой...

Дерево бинарного поиска - C++
Никак не могу понять как изменить бинарный поиск. Код выводит значения элементов для которых высота левого поддерева больше высоты правого,...

Дерево бинарного поиска - C++
Всем привет! Есть рабочий код бинарного поиска template &lt;class Item, class Key&gt; class ST { private: struct node { Item item;...

Реализация бинарного поиска - C++
Здравствуйте. Решил реализовать на С++ бинарный поиск. Вместо массива я взял vector (думаю особой роли это не играет), все бы хорошо, НО....

4
easybudda
Модератор
Эксперт CЭксперт С++
10020 / 5943 / 1004
Регистрация: 25.07.2009
Сообщений: 11,230
14.06.2010, 14:42 #2
iYoung, http://www.cyberforum.ru/cpp-beginne...tml#post507736
0
iYoung
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 24
15.06.2010, 00:56  [ТС] #3
Цитата Сообщение от easybudda Посмотреть сообщение
спасибо , но к моей программе вроде не подходит

Добавлено через 1 час 10 минут
помогите кто-нибудь пожалуйста

Добавлено через 8 часов 45 минут
неужели никто не может помочь ?
0
iYoung
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 24
16.06.2010, 21:42  [ТС] #4
точно никто не поможет ?
0
accept
4832 / 3253 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
17.06.2010, 03:32 #5
бинарный поиск
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <stdlib.h>
 
int BinSearch(int n, int *arr, int size);
 
int main(void) /* ANSI C89 */
{
    int n[5] = { 1, 2, 3, 4, 5 };
    int res, arrsize;
    
    
    arrsize = sizeof n / sizeof n[0];
    
    
    res = BinSearch(3, n, arrsize);
    
    printf("%2d" "\n", res);
    
    res = BinSearch(5, n, arrsize);
    
    printf("%2d" "\n", res);
    
    res = BinSearch(1, n, arrsize);
    
    printf("%2d" "\n", res);
    
    res = BinSearch(7, n, arrsize);
    
    printf("%2d" "\n", res);
    
    
    return EXIT_SUCCESS;
}
 
int BinSearch(int n, int *arr, int size)
{
    int first, last, mid;
    
    first = 0;
    last = size - 1;
    
    while (first <= last) {
            
        mid = (first + last) / 2;
        
        if (n < arr[mid])
            last = mid - 1;
        else if (n > arr[mid])
            first = mid + 1;
        else
            return mid;
    
    }
  
    return -1;
}
0
17.06.2010, 03:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2010, 03:32
Привет! Вот еще темы с ответами:

Объясните принцип бинарного поиска - C++
Можно, пожалуйста, пример или принцип бинарного поиска. С++ для очень сильно начинающих.

Реализация бинарного дерева поиска - C++
Задача: Реализация бинарного дерева поиска Компилируется нормально, а при запуске выбивает ошибку : &quot;Необработанное исключение по адресу...

Исправить реализацию бинарного поиска - C++
Написала бинарный поиск,но что-то не так.Посмотрите. #include &lt;iostream&gt; using namespace std; void main() { const int n...

Реализация бинарного дерева поиска - C++
Не выводит значения узлов деревьев, как я понял происходит утечка памяти, но я не пойму, что нужно сделать. Программа ошибку не выдаёт....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru