Да тут все красное не компилится
din - bin
int din[] - такое объявление массива c-style, в java объявляется так int[] din
break вне цикла while вообще, не в блоке if, после которого красный else if
вот это if(bin[middle]=gde) не сравнение, а присваивание
Вывести надо наверное не искомый элемент, а его позицию в массиве, иначе смысл какой
И в алгоритме ошибка, оба раза сравниваете на больше
И самое прикольное вы ищете то, чего нет в массиве
public static void main(String[] args) {
int gde = 9;// то что ищем
int[] bin = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; //отсортированный массив
int ind1 = 0; //начальный индекс
int ind2 = bin.length - 1; //последний индекс
while (ind1 <= ind2) {
int middle = (ind1 + ind2) / 2;
if (bin[middle] == gde) {
System.out.println(middle);
break;
} else if (bin[middle] > gde) {
ind2 = middle - 1;
}//двигаем границу последнего элемента
else if (bin[middle] < gde) {
ind1 = middle + 1;
}//двигаем границу первого элемента
}
}