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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Классы http://www.cyberforum.ru/cpp-beginners/thread24304.html
вот есть класс class Mnojestvo{ //Класс Множество public: Mnojestvo(int n,char*ptr); ~Mnojestvo(){delete FMas;}; Mnojestvo Union(Mnojestvo &P) const; //Метод "Объединение" ...
C++ в конце каждой строки дописать ее длину :help:у меня есть программа.условие звучит так:"в конце каждой строки дописать ее длину.добавляемая строка имеет вид"строка имеет n символов".здесь n-количество символов в строке.нужно работать на... http://www.cyberforum.ru/cpp-beginners/thread24281.html
Unreachable code Cath statement missing ) Type name expected C++
Всем Салют!У меня проблема в проге.Хочу создать исключение: #include <vcl.h> #pragma hdrstop #include "Unit1.h" //---------------------------------------------------------------------------...
вычислить C++
1)вычислить а1*а2*...*an все это под корнем вычислить((а1под корнем-а1)все в кв.+...+an под корнем + an)в кв.) 2) Выяснить имеются ли в послед. s1,...,sn такие члены послед. si, si+1, что si - ...
C++ Найти слово, один и тот же символ в котором встречается максимальное число раз http://www.cyberforum.ru/cpp-beginners/thread24240.html
длина входной строки не превосходит 300 символов, она вводится с консоли. Вам необходимо вывести на консоль либо преобразованную строку, либо требуемые в условии данные. Использовать класс string...
C++ Указатели =( Ввести с клавиатуры (или из файла) контактные данные нескольких(2..100) человек: В одну строку: Фамилию (слово), группу (одна цифра от 1 до 3), теле- фон (10 цифр), e-mail (слово@слово.слово).... подробнее

Показать сообщение отдельно
Kalashnikov
14 / 14 / 1
Регистрация: 08.02.2009
Сообщений: 63
26.02.2009, 23:19
ну вот, сделал вот так рекурсивно двоичный поиск, если ненаходит элемента, то возвращает -1, если находит, то возвращает индекс элемента

C++
1
2
3
4
5
6
int binsearch(int arr[], int s, int r, int l=0){ // (arr масив в котором ищем, s то что ищем, r размер масива)
    int m=(l+r)/2;
    if (arr[m] == s) return m;
    if (m == l || m == r) return -1;
    if (arr[m] < s) binsearch(arr, s, r, m); else binsearch(arr, s, m); 
    }
Добавлено через 11 минут 29 секунд
это, провтык немного, передавать масив может быть немного накладно для памяти, выгодней передавать указатель, ну разбирайся =)

C++
1
2
3
4
5
6
int binsearch(int* arr, int s, int r, int l=0){
    int m=(l+r)/2;
    if (*(arr+m) == s) return m;
    if (m == l || m == r) return -1;
    if (*(arr+m) < s) binsearch(arr, s, r, m); else binsearch(arr, s, m);   
    }
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru