с использованием Linq:
int[] arr = new[] { 1, 23, 57, 59, 120 };
int target = 109;
int max = arr.Where(n => n < target).Max();
Возможно, не самый быстрый, но, вероятно, самый простой в реализации.Также не полагается на сортировку массива, как это делает бинарный поиск.
Обратите внимание, что вызов Max
вызовет исключение, если фильтр Where
не даст никаких элементов, поэтому вы можете захотетьпроверьте, если это возможно.