По координатам
вычисляйте индекс квадрата. Что-то типа
dlina_stroki * position.y + position.x
Это точно быстрее поиска, пусть и бинарного )
Если там действительно квадраты через единый шаг, то так должно получиться. Квадраты в массиве ведь упорядочены по колонкам, столбцам? Пример с реальными данными помог бы.
Допустим, там целочисленные координаты от 0 до 1800 с шагом 200. Поле
10x10
— массив длиной 100.
0,0 200,0 400,0 ... 1800,0
0,200 200,200 400,200 ... 1800,200
0,400 200,400 400,400 ... 1800,400
...
0,1800 200,1800 400,1800 ... 1800,1800
Интересует индекс элемента
(400,200)
i = storona * y / shag + x / shag
Шаг у нас
shag = 200
значит, искомый индекс
10 * 200 / 200 + 400 / 200 = 12