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