Самый эффективный алгоритм поиска - бинарный. Это O(log N) для отсортированного массива.
Но надо еще понять, как расположены элементы в квадратной матрице.
Если без сортировки, то надо перебрать все элементы - это O(N^2).
Другой случай - она (матрица) отсортирована. Тут надо сделать уточнение, что отсортирована может быть только по строкам, либо столбцам, т.е. градиентного (если так можно выразиться) представления нет. Для асимптотики разницы никакой между построчной и постолбцовой сортировки (с точки зрения кэша - лучше построчное).
Тогда сложность поиска будет O(N * logN), т.к. тебе надо будет пройти по каждой строке (N) и выполнить для нее бинарный поиск (log N).