Написать рекурсивную программу для алгоритма бинарного поиска. (C/C++) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Написать рекурсивную программу для алгоритма бинарного поиска.

Решение задачи: «Написать рекурсивную программу для алгоритма бинарного поиска. (C/C++)»

textual
Листинг программы
int BinSearch(int *Arr, int a, int b, int v) // a - начало интервала поиска, b-конец, v - то, что ищем
{
    int c;
    if ((b-a)<=1) return (Arr[a]==v || Arr[b]==v); // если интервал стал меньше или = 1 - проверяем крайние точки
                                                                   // если v найдено - вернем 1
    c=(a+b)/2; // середина интервала
    if (Arr[c]==v) return 1; // если случайно попали - ура!
    if (Arr[c] > v)  // если средний элемент больше искомого
       return BinSearch(Arr,a,c,v); // ищем в левой части
    else
       return BinSearch(Arr,c,b,v); // иначе ищем в правой части   
}

Объяснение кода листинга программы

  1. Входные данные:
    • Arr - массив, в котором осуществляется поиск
    • a - начало интервала поиска
    • b - конец интервала поиска
    • v - значение, которое необходимо найти
  2. Проверка условия: если интервал поиска состоит из одного элемента или менее, то возвращается значение, равное 1, если искомое значение v содержится в этом элементе, и 0 в противном случае.
  3. Вычисление среднего индекса интервала c.
  4. Проверка условия: если элемент с индексом c равен искомому значению v, то возвращается значение 1.
  5. Если элемент с индексом c больше искомого значения v, то поиск продолжается в левой части интервала (от a до c-1).
  6. Если элемент с индексом c меньше искомого значения v, то поиск продолжается в правой части интервала (от c+1 до b).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5
Похожие ответы