Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
TheNegativeOne
0 / 0 / 0
Регистрация: 06.09.2014
Сообщений: 3
#1

Бинарный поиск через рекурсию: разобрать логику кода - C++

09.09.2014, 18:45. Просмотров 643. Ответов 4
Метки нет (Все метки)

Помогите , уже второй день мучаюсь с алгоритмом бинарного поиска через рекурсию . Не понимаю откуда берутся значения которые мне выдает программа .
Код ниже .
C++
1
2
3
4
5
6
7
8
9
int search(int massive[10], int ls, int rs, int element)
{
    
    int m = (ls + rs) / 2;
    if (massive[m] == element) return m;
    if (ls = rs) return -1;
    if (massive[m] > element)      { rs = m; search(massive, ls, rs, element); }
    else if (massive[m] < element) { ls = m; search(massive, ls, rs, element); }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2014, 18:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Бинарный поиск через рекурсию: разобрать логику кода (C++):

Разобрать логику работы приведенного кода
Здравствуйте, уважаемые! #include &lt;iostream&gt; using namespace std; long...

поиск через рекурсию
С помощью массива структур описать каталог компьютерных игр, предусмотрев...

Поиск кратчайшего пути в матрице через рекурсию
Есть задача: найти кратчайший путь в матрице,представляющий из себя сумму...

Подскажите логику нескольких строк кода
Помогите пожалуйста. Меня интересуют только места где используется указатель....

Не понимаю логику обработки кода, разбитого на файлы
Ситуация примерно такая. Есть файл file1.h, в котором объявлена функция: ...

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

4
Dani
1393 / 637 / 134
Регистрация: 11.08.2011
Сообщений: 2,295
Записей в блоге: 2
Завершенные тесты: 1
09.09.2014, 19:05 #2
TheNegativeOne, а весь код можно?
0
zss
Модератор
Эксперт С++
6953 / 6515 / 4136
Регистрация: 18.12.2011
Сообщений: 17,201
Завершенные тесты: 1
09.09.2014, 19:07 #3
Цитата Сообщение от TheNegativeOne Посмотреть сообщение
ls = rs
C++
1
ls==rs
0
TheNegativeOne
0 / 0 / 0
Регистрация: 06.09.2014
Сообщений: 3
09.09.2014, 19:17  [ТС] #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
include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
void sort(int massive[15]);
int search(int massive[], int ls, int rs, int element);
int massive[15];
void main()
{
    int key;
    setlocale(LC_ALL, "Russian");
    srand(time(0));
    
 
    for (int i = 0; i < 15; i++)// Массив заполняется числами равными его номеру
        massive[i] = rand()%15;
    sort(massive);
    key=search(massive, 0, 15, 9);
    cout << key;
    _getch();
}
void sort(int massive[15])
{
    for (int i = 0; i < 15; i++){
        for (int j = 1; j < 15; j++)
        {
            int t;
            if (massive[j - 1]>massive[j]) { t = massive[j]; massive[j] = massive[j - 1]; massive[j - 1] = t; }
        }
    }
}
 
 
 
int search(int massive[], int ls, int rs, int element)
{
    //if ((ls = rs - 1) && (element != massive[rs]) && (element != massive[ls])) return -1;
 
    int m = (ls + rs) / 2;
    if (massive[m] == element) return m;
    if (massive[m] > element) { rs = m;   search(massive, ls, rs, element); }
    else if (massive[m] < element) { ls = m; search(massive, ls, rs, element); }
}
#



Добавлено через 1 минуту
Цитата Сообщение от zss Посмотреть сообщение
C++
1
ls==rs
Цитата Сообщение от zss Посмотреть сообщение
ls==rs
Я плавно перехожу от Object Pascal к C++ , остались пережитки
0
TheNegativeOne
0 / 0 / 0
Регистрация: 06.09.2014
Сообщений: 3
13.09.2014, 19:08  [ТС] #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
#include <iostream>
#include <conio.h>
#include <time.h>
 
using namespace std;
int recurse_seek(int *massive, int ls, int rs, int element);
int recurse_seek_(int *massive, int ls, int rs, int element);
void sort(int *p);
void main()
{
    srand(time(0));
    int qwert[10];
    for (int i = 0; i < 10; i++)    
        qwert[i] = rand()%10;       
    int *p(0);              
    sort(qwert);                    
    p = qwert;                      
    for (int i = 0; i < 10; i++)        
    {                                       
        int key = recurse_seek(p, 0, 9, i); 
        cout << key;                        
        cout<< endl;                        
    }
    
 
    _getch();
}
int recurse_seek(int *massive,int ls,int rs,int element) 
{                                                       
                                                        
    if (ls < 0 || rs < 0) return -1;            
    if (*(massive+rs) == element) return rs;  
    recurse_seek_(massive, ls, rs, element); 
}
int recurse_seek_(int *massive, int ls, int rs, int element)
{
    if (ls == 0 && rs == 0 && element != *massive) return -4; 
    if (ls == rs - 1 && *(massive + ls)<element) return -3; 
    int m = (ls + rs) / 2;
    if (*(massive + m) == element) return m;
    if (*(massive + m) > element) { rs = m; return recurse_seek_(massive, ls, rs, element); }
    if (*(massive + m) < element) { ls = m; return recurse_seek_(massive, ls, rs, element); }
}
void sort(int *p)
{
    for (int i = 0; i < 10; i++)
    {
        for (int j = 1; j < 10; j++)
        {
            if (*(p + (j - 1))>*(p + j)) { int t = *(p + (j - 1)); *(p + (j - 1)) = *(p + j); *(p + j) = t; }
        }
    }
}
0
13.09.2014, 19:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2014, 19:08
Привет! Вот еще темы с решениями:

Разобрать строку кода
как детально разобраться с этой строчкой кода : cout&lt;&lt;((A&gt;&gt;i)&amp;1);

Разобрать строку кода
Часть программы, если что // Game engine struct Piece { struct {...

Разобрать блок приведенного кода
Есть код: Game::Game() : mWindow(sf::VideoMode(640, 480), &quot;SFML...

Помогить разобрать строчку кода!
Есть такая строка: CSatelliteContainer&amp; container =...


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

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

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