Как найти Двоичный поиск? - C (СИ)
Формулировка задачи:
Как найти Двоичный поиск?
Решение задачи: «Как найти Двоичный поиск?»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int binSearch(int *array, int n, int key); int a[1000000]; int b[15000]; int main() { int i; int n, m; scanf("%d %d\n", &n, &m); for (i = 0; i < n; i++){ scanf("%d", &a[i]); } for (i = 0; i < m; i++){ scanf("%d", &b[i]); } /* processing */ for (i = 0; i < m; i++){ printf("%d", binSearch(a, n, b[i])); } system("pause"); return 0; } int binSearch(int *array, int n, int key) { int mid; int min = 0; int max = n - 1; while (min <= max){ mid = min + ((max - min ) / 2); if (array[mid] == key) return 1; if (key > array[mid]){ min = mid + 1; } if (key < array[mid]){ max = mid - 1; } } return 0; }
Объяснение кода листинга программы
В данном коде реализован алгоритм двоичного поиска. Он используется для поиска ключа в отсортированном массиве. Список действий:
- Ввод данных:
- Ввод количества элементов в первом массиве
n
. - Ввод количества элементов во втором массиве
m
. - Ввод элементов первого массива
a
. - Ввод элементов второго массива
b
.
- Ввод количества элементов в первом массиве
- Обработка данных:
- Здесь предполагается какая-то обработка данных, но в данном коде она отсутствует.
- Выполнение двоичного поиска:
- Для каждого элемента второго массива
b
выполняется двоичный поиск в первом массивеa
. - Возвращается значение 1, если элемент найден, и 0 в противном случае.
- Для каждого элемента второго массива
- Вывод результатов:
- Результаты поиска выводятся на экран.
- Завершение работы программы:
- Программа ожидает нажатия клавиши
pause
для завершения работы. В данном коде переменныеn
иm
используются для хранения количества элементов в массивахa
иb
соответственно. Массивa
используется для хранения данных, в которых будет производиться поиск, а массивb
- для хранения ключей, которые будут искаться в массивеa
. Алгоритм двоичного поиска реализован в функцииbinSearch
. Она принимает указатель на массив, его размерn
, и искомый ключkey
. Внутри функции используется циклwhile
, который выполняется до тех пор, покаmin
не станет больше или равноmax
. Это условие означает, что искомый ключ не найден. Внутри цикла вычисляется средний индексmid
с помощью формулыmin + ((max - min) / 2)
. Затем проверяется равенствоarray[mid]
иkey
. Если они равны, то ключ найден, и функция возвращает 1. Если ключ большеarray[mid]
, то искомый ключ находится в правой половине массива, иmin
увеличивается на 1. Если ключ меньшеarray[mid]
, то искомый ключ находится в левой половине массива, иmax
уменьшается на 1. Если ключ не найден, то функция возвращает 0.
- Программа ожидает нажатия клавиши
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д