Метод бинарного поиска - C (СИ)
Формулировка задачи:
Не компилируется,никак не могу понять в чем проблема.Суть программы в поиске элемента в массиве
#include <stdio.h>
#include <locale.h>
const int N = 10;
main()
{
setlocale(LC_ALL,"Russian");
int L = 0, R = N-1, m, A[N],
flag = 0;
scanf("%d", &N);
int x;
printf("Введите искомый элемент\n");
scanf( "%d", &x);
while ( L <= R )
{
m = (L + R) / 2; // середина интервала
if ( A[m] == x )
{
flag = 1;
break;
}
if ( x < A[m] ) R = m - 1;
else L = m + 1;
}
if ( flag )
printf ( "Нашли: A[%d]=%d", m, A[m] );
else
printf ( "Такого элемента нет" );
}Решение задачи: «Метод бинарного поиска»
textual
Листинг программы
int main()
Объяснение кода листинга программы
- Создается переменная
nи инициализируется значением 10 - Создается массив
aтипа int размером 10 - В цикле от 0 до 9 заполняются значения массива
a - Создается функция
bin_searchс прототипом int bin_search(int a[], int n, int x) - Внутри функции инициализируется переменная
lowзначением 0 - Внутри функции инициализируется переменная
highзначениемn-1 - В цикле while (low <= high) выполняется следующая последовательность действий:
- Вычисляется средний индекс
midкак (low + high) / 2 - Если значение массива
aс индексомmidравноx, то возвращаетсяmid - Если значение массива
aс индексомmidменьшеx, то обновляется значение переменнойhighнаmid-1 - Если значение массива
aс индексомmidбольшеx, то обновляется значение переменнойlowнаmid+1
- Вычисляется средний индекс
- Если цикл while закончился, то возвращается -1
- Функция
bin_searchвызывается с аргументамиa,n,x - Результат функции
bin_searchприсваивается переменнойresult - Выводится значение переменной
result - Программа завершается