21Июл/100
Двоичный поиск (только для отсортированных массивов)
Массив делится пополам и граница сдвигается в соответствии с тем, где, возможно, находится искомый элемент.
Боевой пример:
int dv_seach(int *mArray, int _size, int find_el)
{
int left = 0, right = _size - 1, m; //Устанавливаем границы
while(left < right)
{
m = (left + right) / 2; //Выбираем середину
if (find_el > mArray[m]) left = m + 1; //Если элемент в середине рассматриваемого
//участка больше искомого, то сдвигаем границу влево
else right = m; //Если меньше - вправо
}
return find_el == mArray[left] ? left + 1 : 0; //Если элемент найден, то возвращаем его позицию, если нет, то 0
}
Leave a comment