当前位置:  开发笔记 > 编程语言 > 正文

SortedList <K,V>上是否有下限功能?

如何解决《SortedList<K,V>上是否有下限功能?》经验,为你挑选了1个好方法。



1> Mehrdad Afsh..:

二进制搜索SortedList.Keys集合.

开始了.这是O(log n):

private static int BinarySearch(IList list, T value)
{
    if (list == null)
        throw new ArgumentNullException("list");
    var comp = Comparer.Default;
    int lo = 0, hi = list.Count - 1;
    while (lo < hi) {
            int m = (hi + lo) / 2;  // this might overflow; be careful.
            if (comp.Compare(list[m], value) < 0) lo = m + 1;
            else hi = m - 1;
    }
    if (comp.Compare(list[lo], value) < 0) lo++;
    return lo;
}

public static int FindFirstIndexGreaterThanOrEqualTo
                          (this SortedList sortedList, T key)
{
    return BinarySearch(sortedList.Keys, key);
}


为避免溢出:var m = low +(hi - low)/ 2
推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有