Алгоритм бинарного поиска в массиве - C (СИ)
Формулировка задачи:
Дайте пожалуйста алгоритм бинарного поиска в массиве.
Заранее спасибо !
Решение задачи: «Алгоритм бинарного поиска в массиве»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <locale.h> void main() { setlocale(LC_ALL,"Rus"); printf(" Бинарный поиск \n"); int i, n, key, begin, end, c; bool x=false; printf("Размер массива > "); scanf("%d", &n); int *mas=(int*)malloc(n*n *sizeof(int)); printf("Искомый элемент > "); scanf("%d", &key); for (i=0; i<n; i++) { mas[i]=n*i; printf (" %d \n", mas[i]); } begin=0; end=n; while (begin<end) { c=begin+(end-begin)/2; if (key<mas[ c ]) end=c; else if (key>mas[ c ]) begin=c+1; else { x=true; break; } } if (x==true) printf("Элемент найден %d \n", x); else printf("Элемент не найден \n"); delete []mas; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с языком C
- Установка русской локали для вывода информации
- Вывод приветствия и названия алгоритма
- Объявление переменных: i, n, key, begin, end, c и x со значением false
- Запрос размера массива у пользователя
- Выделение памяти под массив с динамическим размером
- Запрос искомого элемента у пользователя
- Заполнение массива значениями по формуле n*i
- Вывод заполненного массива на экран
- Инициализация начального и конечного индексов для поиска
- Вход в цикл while, который будет выполняться до тех пор, пока begin меньше или равно end
- Вычисление центрального индекса c как (end-begin)/2 + begin
- Проверка условия: если искомый элемент меньше значения mas[c], то обновление end = c
- Иначе, если искомый элемент больше значения mas[c], то обновление begin = c+1
- Если искомый элемент равен значению mas[c], то установка x в true и выход из цикла while с помощью оператора break
- После цикла while проверка значения x. Если x равно true, то вывод сообщения об успешном поиске и значения x. Иначе, вывод сообщения об отсутствии искомого элемента.
- Освобождение памяти, выделенной под массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д