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

Как запрограммировать в рекурсивной форме алгоритм бинарного поиска - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Компилятор с открытым исходным кодом на C++ http://www.cyberforum.ru/cpp-beginners/thread512412.html
Подскажите хороший и быстрый компилятор с открытым исходным кодом на C++.
C++ Задача на формирование матрицы Даны целые положительные числа M и N. Сформировать целочислен-ную матрицу размера M × N, у которой все элементы J-го столбца имеют значение 5·J (J = 1, …, N). http://www.cyberforum.ru/cpp-beginners/thread512409.html
C++ Задача на сортировку массива
Дан массив A размера N (≤ 6). Упорядочить его по возрастанию ме-тодом сортировки простыми вставками: сравнить элементы A1 и A2 и, при необходимости меняя их местами, добиться того, чтобы они оказались упорядоченными по возрастанию; затем обратиться к элементу A3 и пере-местить его в левую (уже упорядоченную) часть массива, сохранив ее упо-рядоченность; повторить этот процесс для остальных...
C++ Запись в файл
Напишите пожалуйста простой пример записи в файл.
C++ Задача на удаление и вставку элементов в массиве http://www.cyberforum.ru/cpp-beginners/thread512393.html
Дан целочисленный массив размера N. Удалить из массива все эле-менты, встречающиеся ровно два раза, и вывести размер полученного мас-сива и его содержимое
C++ Осуществить циклический сдвиг элементов массива влево на K позиций Дан массив A размера N и целое число K (1 ≤ K ≤ 4, K < N). Осущест-вить циклический сдвиг элементов массива влево на K позиций (при этом A(N) перейдет в A(N–K), A(N–1) — в A(N–K–1), …, A(1) — в A(N–K+1). Допускается исполь-зовать вспомогательный массив из 4 элементов. подробнее

Показать сообщение отдельно
Fox01
3 / 3 / 0
Регистрация: 04.03.2012
Сообщений: 55
05.03.2012, 20:15  [ТС]     Как запрограммировать в рекурсивной форме алгоритм бинарного поиска
Цитата Сообщение от DU Посмотреть сообщение
вот например такой поиск в сортированном массиве:
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
#include <iostream>
 
const int* FindFirstElem(const int* arr, unsigned size, int value)
{
  if (arr == 0 || size == 0)
    return 0;
 
  if (size == 1)
    return arr[0] == value ? arr : 0;
 
  const unsigned halfArrSize = size / 2;
 
  if (arr[halfArrSize - 1] < value)
    return FindFirstElem(arr + halfArrSize, size - halfArrSize, value);
 
  return FindFirstElem(arr, halfArrSize, value);
}
 
int FindFirstIndex(const int* arr, unsigned size, int value)
{
  const int* result = FindFirstElem(arr, size, value);
  return result == 0 ? -1 : static_cast<int>(result - arr);
}
 
int main()
{
  const int arr[] = {0, 1, 2, 3, 4, 5, 5, 6, 7};
  const int searchValue = 5;
  const int* result = FindFirstElem(arr, sizeof(arr) / sizeof(*arr), searchValue);
  if (result != 0)
  {
    std::cout << "The '" << searchValue << "' is found." << std::endl;
    std::cout << "First value index = " << result - arr << std::endl;
  }
  else
  {
    std::cout << "The '" << searchValue << "' is not found." << std::endl;
  }
 
  const int index = FindFirstIndex(arr, sizeof(arr) / sizeof(*arr), searchValue);
  std::cout << "Index = " << index << std::endl;
 
  return 0;
}
Если Вас не затруднит - не могли бы Вы немного пояснить мне код программы - что есть что - а то я запуталась... задаю массив - после задаю число - в примере это 5 да? а что это за число позиция или просто число в массиве? или первое вхождение?
 
Текущее время: 18:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru