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