Как найти Двоичный поиск? - 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;
}

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

В данном коде реализован алгоритм двоичного поиска. Он используется для поиска ключа в отсортированном массиве. Список действий:

  1. Ввод данных:
    • Ввод количества элементов в первом массиве n.
    • Ввод количества элементов во втором массиве m.
    • Ввод элементов первого массива a.
    • Ввод элементов второго массива b.
  2. Обработка данных:
    • Здесь предполагается какая-то обработка данных, но в данном коде она отсутствует.
  3. Выполнение двоичного поиска:
    • Для каждого элемента второго массива b выполняется двоичный поиск в первом массиве a.
    • Возвращается значение 1, если элемент найден, и 0 в противном случае.
  4. Вывод результатов:
    • Результаты поиска выводятся на экран.
  5. Завершение работы программы:
    • Программа ожидает нажатия клавиши 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.

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


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

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

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