Написать рекурсивную программу для алгоритма бинарного поиска. (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); // иначе ищем в правой части }
Объяснение кода листинга программы
- Входные данные:
- Arr - массив, в котором осуществляется поиск
- a - начало интервала поиска
- b - конец интервала поиска
- v - значение, которое необходимо найти
- Проверка условия: если интервал поиска состоит из одного элемента или менее, то возвращается значение, равное 1, если искомое значение v содержится в этом элементе, и 0 в противном случае.
- Вычисление среднего индекса интервала c.
- Проверка условия: если элемент с индексом c равен искомому значению v, то возвращается значение 1.
- Если элемент с индексом c больше искомого значения v, то поиск продолжается в левой части интервала (от a до c-1).
- Если элемент с индексом c меньше искомого значения v, то поиск продолжается в правой части интервала (от c+1 до b).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д