Бинарный поиск: Если в первом массиве есть такое же число, как и во втором, то написать YES - C (СИ)

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

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

Можете помочь составить бинарный поиск вида: если в первом массиве есть такое же число, как и во втором, то написать YES, иначе NO?

Решение задачи: «Бинарный поиск: Если в первом массиве есть такое же число, как и во втором, то написать YES»

textual
Листинг программы
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
 
int compare(const void* pa, const void* pb) {
    int a = *(int*)pa;
    int b = *(int*)pb;
    return a < b ? -1 : a != b;
}
 
bool present(int* arr1, size_t siz1, int* arr2, size_t siz2) {
    while (siz2--) {
        if (bsearch(arr2++, arr1, siz1, sizeof(int), compare)) { return true; }
    }
    return false;
}
 
int main(void)
{
    int a[] = { 1, 2, 3 };
    int b[] = { 8, 9, 0 };
    puts(present(a, 3, b, 3) ? "YES" : "NO");
    return 0;
}

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

  1. Подключение необходимых библиотек: stdbool.h, stdlib.h, stdio.h
  2. Определение функции сравнения: compare(const void pa, const void pb)
  3. Функция принимает на вход два указателя на массивы: arr1, arr2
  4. Внутри функции происходит приведение указателей к типу int: a = (int)pa; b = (int)pb;
  5. Затем происходит сравнение a и b: return a < b ? -1 : a != b;
  6. Если a меньше b, то возвращается -1, иначе возвращается 0
  7. В функции present(int arr1, size_t siz1, int arr2, size_t siz2) идет поиск числа из массива arr2 в arr1 с помощью функции bsearch
  8. Если число найдено, то функция возвращает true, иначе false
  9. В функции main создаются два массива: a и b
  10. Массив a содержит: 1, 2, 3, а массив b содержит: 8, 9, 0
  11. Затем вызывается функция present с этими массивами и выводится результат на экран с помощью функции puts
  12. Результатом выполнения программы будет NO, так как число 0 из массива b не найдено в массиве a

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


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

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

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