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

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

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

Бинарный поиск - C++

14.06.2010, 14:27. Просмотров 1025. Ответов 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++):

Поиск числа в двумерном массиве (бинарный поиск) - C++
Произвожу поиск элемента в массиве двумя способами: линейным(последовательным) поиском и бинарным(двоичным). Первый работает на ура. Второй...

Бинарный поиск - C++
Здравствуйте, помогите пожалуйста написать бинарный поиск одного элемента, текст читается из файла. Лабу сдавать в понедельник а я не знаю...

Бинарный поиск - C++
Реализуйте алгоритм бинарного поиска. Входные данные В первой строке входных данных содержатся натуральные числа N и K . Во второй...

Бинарный поиск - C++
за какое время работает бинарный поиск?

Бинарный поиск - C++
Вообщем, написал бинарный поиск, а он не работает для ключа со значением 9, может кто объяснить, как решить эту проблему? А ещё я не совсем...

Бинарный поиск - C++
Найти индекс расположения числа 15 в массиве на 20 элементов и сумму элементов предшествующих ему. Методом бинарного поиска. Вот код в...

4
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
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
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2010, 03:32
Привет! Вот еще темы с ответами:

Бинарный поиск - C++
Всем привет! У меня вот тут маленькая проблемка! Помогите исправить, а то сама что-то не могу!! (( Когда прога просит ввести ключ...

Бинарный поиск - C++
Каким образом выполнить бинарный поиск определнного значения в отсортированном массиве?

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

Бинарный поиск c++ - C++
1) последовательного поиска максимального элемента в одномерном динамическом массиве; 2) бинарного поиска количества нулевых элементов...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
17.06.2010, 03:32
Ответ Создать тему
Опции темы

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