Простой вопрос - задан IList<T>
, как вы выполняете двоичный поиск, не записывая метод самостоятельно и не копируя данные в тип с встроенной поддержкой двоичного поиска. Мое текущее состояние следующее.
-
List<T>.BinarySearch()
не является членомIList<T>
- Нет эквивалента метода
ArrayList.Adapter()
дляList<T>
-
IList<T>
не наследуется отIList
, поэтому использованиеArrayList.Adapter()
невозможно
Я склонен полагать, что это невозможно с помощью встроенных методов, но я не могу поверить, что такой базовый метод отсутствует в BCL/FCL.
Если это невозможно, кто может дать самую короткую, быструю, умную или самую красивую реализацию бинарного поиска для IList<T>
?
UPDATE
Мы все знаем, что список должен быть отсортирован перед использованием двоичного поиска, поэтому вы можете предположить, что он есть. Но я предполагаю (но не проверял) это та же проблема с сортировкой - как вы сортируете IList<T>
?
Заключение
Кажется, нет встроенного двоичного поиска для IList<T>
. Для поиска и сортировки можно использовать методы First()
и OrderBy()
LINQ, но это будет иметь худший результат. Реализация его самостоятельно (как метод расширения) кажется лучшим, что вы можете сделать.