0 / 0 / 1
Регистрация: 27.03.2017
Сообщений: 19
1

Рекурсия: бинарный поиск

07.05.2017, 18:14. Показов 16355. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: сделать рекурсию бинарного поиска,при вводе числа она должна написать номер числа. У меня получилась так но она не хочет работать.
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
#include <iostream>
using namespace std; 
int bezbinSearch(int *M, int n, int k);
int binsearch(int A[], int x, int n, int l=0);
int main()
{
    int n;
    int x;
    cout<<"Vevite dlinu maciva: ";
    cin>>n;
    int* A=new int[n];
    for (int i=0; i<n; i++)
    {
        A[i]=i+2;
        cout<<A[i]<<" ";
    
    }
    
    cout << "Vvedite hislo: ";
    cin >> x;
    
    cout << bezbinSearch(A, n, x)+1;
    
    cout<<binsearch(A,n,x);
    return 0;
} 
int binsearch(int* A[], int x, int n, int l=0){
    int m=(l+n)/2;
    if (*(A[m]) == x) return m;
    if (m == l || m == n) return -1;
    if (*(A[m]) < x) binsearch(A, x, n, m); else binsearch(A, x, m); 
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2017, 18:14
Ответы с готовыми решениями:

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

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

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

Бинарный поиск
Что переделать в программе, чтобы она находила первый элемент больше или равный заданному? ...

3
Джоуи
1081 / 643 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2
07.05.2017, 18:29 2
Denkir27, а где реализация bezbinSearch? Или это не важно

Добавлено через 35 секунд
И еще - когда пишете "не хочет выполняться", пишите почему или какую ошибку и на какой строке выдает
0
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
07.05.2017, 18:38 3
Denkir27,
Видимо, вы планировали написать вот так :
(Как минимум, разберитесь что вообще делает оператор "*").
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int binary_search(const int array[],const int &to_find, const int &right, const int &left)
{
    int middle = (left + right) / 2;
 
    if (array[middle] == to_find)
        {
          return middle;
       }
 
     if (middle == right || middle == left)
       {
         return -1;
       }
 
    if (array[middle] < to_find)
      {
        return  binary_search(array, to_find, right, middle);
      }
    else if (array[middle] > to_find)
      {
          return  binary_search(array, to_find, middle);
      }
}
1
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
07.05.2017, 19:21 4
Denkir27, разбираться в чужом коде труднее, чем писать свой. Поэтому я сделал лёгкую работу, а тебе предлагаю трудную.
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
#include <iostream>
#include <string>
using namespace std;
 
int binSearch (int* A, int left, int right, int x) {
  int mid = (left + right) / 2;
  if (left == mid)
    return A[left] == x ? left : A[right] == x ? right : -left;
  if (A[mid] < x)
    left = mid;  
  else 
    right = mid;  
  return binSearch (A, left, right, x);
}
 
void main (int argc, char** argv) {
  if (argc != 3) {
    cout << "Usage: BinarySearch n x";
    return;
  }
  int n = stoul (argv[1]);
  int x = stoul (argv[2]);
  int* A = new int [n];
  for (int i = 0; i < n; ++i)
    A[i] = i;
  cout << binSearch (A, 0, n - 1, x);
}
2
07.05.2017, 19:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2017, 19:21
Помогаю со студенческими работами здесь

Бинарный поиск
Писал алгоритм бинарного поиска по массиву строк. В результате, почему-то, периодически функция не...

Бинарный поиск
Здравствуйте, не могу понять как составить алгоритм: нужно найти сумму элементов в массиве, которые...

Бинарный поиск
Здравствуйте, помогите пожалуйста написать функцию бинарного поиска с подсчетом всех найденных...

Бинарный поиск
Заполнить массив случайными числами и отсортировать его. Ввести число X. Используя двоичный поиск,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru