Это O (n) худший случай. Не очень хорошо.

ли функция нижней границы наSortedList<K ,V>? Функция должна возвращать первый элемент, равный или больше указанного ключа. Есть ли другой класс, который поддерживает это?

Ребята - пожалуйста, прочитайте вопрос еще раз.Мне не нужна функция, которая возвращает ключ, если он присутствует. Меня интересует сценарий, когда нет точного соответствия ключей.

Я заинтересован в O (войти N) время, Это означает, что у меня нет проблем с циклом foreach, но я хотел бы иметь эффективный способ сделать это.

Я сделал несколько тестов по этому вопросу.

Операторы Linq не оптимизируются ни компилятором, ни машиной времени выполнения, поэтому они проходят через все элементы коллекции и работают медленно (O). Основываясь на ответе Мехрада Афшари, приведем бинарный поиск, который работает в O (log n) в коллекции Keys:

public static int FindFirstIndexGreaterThanOrEqualTo<T>(
            this IList<T> sortedCollection, T key
        ) where T : IComparable<T> {
    int begin = 0;
    int end = sortedCollection.Count;
    while (end > begin) {
        int index = (begin + end) / 2;
        T el = sortedCollection[index];
        if (el.CompareTo(key) >= 0)
            end = index;
        else
            begin = index + 1;
    }
    return end;
}

Ответы на вопрос(1)

Ваш ответ на вопрос