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

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

Восстановить пароль Регистрация
 
iYoung
 Аватар для iYoung
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 24
14.06.2010, 14:27     Бинарный поиск #1
Добрый день , возникла проблема с бинарным поиском . Я его просто нашел в интернете и вставил в программу не много отредактировав . Вобщем бинарный поиск не работает , прошу помочь . Спасибо


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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2010, 14:27     Бинарный поиск
Посмотрите здесь:

C++ бинарный поиск
C++ Бинарный поиск
C++ Бинарный поиск
Бинарный поиск C++
Бинарный поиск C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
14.06.2010, 14:42     Бинарный поиск #2
iYoung, http://www.cyberforum.ru/cpp-beginne...tml#post507736
iYoung
 Аватар для iYoung
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 24
15.06.2010, 00:56  [ТС]     Бинарный поиск #3
Цитата Сообщение от easybudda Посмотреть сообщение
спасибо , но к моей программе вроде не подходит

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

Добавлено через 8 часов 45 минут
неужели никто не может помочь ?
iYoung
 Аватар для iYoung
1 / 1 / 0
Регистрация: 06.10.2009
Сообщений: 24
16.06.2010, 21:42  [ТС]     Бинарный поиск #4
точно никто не поможет ?
accept
4838 / 3237 / 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;
}
Yandex
Объявления
17.06.2010, 03:32     Бинарный поиск
Ответ Создать тему

Метки
язык c:бинарный поиск
Опции темы

Текущее время: 14:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru