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

Нужен простой пример бинарного поиска - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переменные http://www.cyberforum.ru/cpp-beginners/thread419673.html
Помогите кто нибудь в коде объявить локальные переменные #include <conio.h> #include <iostream.h> #include <stdio.h> #include <fstream.h> int m,n,k,sum,q,prov,vb,vc,p; void razmer(int(&A), int &m, int &n) {
C++ Пояснение к задаче объяснить каждое действие Вот задача Объясните мне пожалуйста каждую строчку Программка оч классная но я не понимаю что там делается , если не сложно помогите пожалуйста #include <iostream> #include <cstdlib> #include <ctime> using namespace std; #define dimm_arr 9 // размер исходного массива http://www.cyberforum.ru/cpp-beginners/thread419669.html
C++ Сколько раз среди заданных символов встречается символ "+" и сколько раз символ "*"
Даны натуральное число n, символы S1, S2, ..., Sn. Подсчитать: сколько раз среди данных символов встречается символ "+" и сколько раз символ "*"
Исправьте мне ошибки в коде C++
Привет всем... посмотрите пожалуйста правильно я написал программу? Пример 1. #include <cstdlib> #include <iostream> #include <cmath> using namespace std; int main(int argc, char *argv) { double x, y, z; cin >> x;
C++ Получение информации о частоте и длительности из звукового файла. http://www.cyberforum.ru/cpp-beginners/thread419649.html
Нужно получить информацию ТОЛЬКО о частотах и длительностях звукового файла. Откуда такую инфу проще достать? Мне кажется, что из PCM или WAV. А главное-как?!
C++ Отсортировать вставкой массив между элементами с номерами n1 и n2 Программа выводит два целых числа n1<n2< размера массива. Отсартировать вставкой массив между элементами с номерами n1 и n2 Помагите буду очень признательна =) Один вопрос - одна тема! подробнее

Показать сообщение отдельно
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
28.12.2011, 15:20  [ТС]     Нужен простой пример бинарного поиска
Тот пример на который вы дали ссылку реализует поиск элемента, загнав его при этом в оперативку и там с ним и работает. А можно ли как нибудь реализовать поиск без этого?

Добавлено через 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
57
58
59
#include <iostream.h>
int BinarySearch(int [], int, int, int);
void PrintRow(int [], int, int);
const int arraySize = 15;
void main( void )
{
 int a[arraySize], key, result;
 // инициализация элементов массива
 for ( int i = 0; i < arraySize; i++) 
 a[i] = 2*i; 
 cout << "Input key, a number in [0,28]: ";
 cin >> key;
 // вызов функции BinarySearch и присвоение
 // возвращаемого ею значения переменной result
 result = BinarySearch(a, key, 0, arraySize - 1);
 if(result != -1)
 cout << '\n' << key << " found in " << result 
 << " element of array\n";
 else
 cout << '\n' << key << " not found \n";
}
// Двоичный поиск
int BinarySearch(int b[], int searchKey, int low, int high)
{
 int middle;
 while (low <= high)
 {
 middle = (low + high) / 2;
 PrintRow(b, low, middle, high);
 if (searchKey == b[middle])
 return middle;
 else if (searchKey < b[middle])
 high = middle - 1;
 else
 low = middle + 1;
 }
 return -1;
}
// печать одной строки, показывающей текущую 
// обрабатываемую часть массива
void PrintRow(int b[], int low, int mid, int high)
{
 for(int i = 0; i < arraySize; i++)
 if (i < low || i > high) 
 cout << " "; 
 else 
 {
 if (i * 2 < 10) 
 cout << " ";
 else 
 cout << " "; 
 
 if(i == mid)
 cout << b[i] << '*'; /* отметить среднее значение */
 else 
 cout << b[i] << ' ';
 }
 cout << '\n';
}
Только посмотрите пожалуйста на что он ругается.
 
Текущее время: 00:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru