简单的问题 - 给定一个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方法进行搜索和排序,但它可能会受到性能影响.自己实现它(作为扩展方法)似乎是你能做到的最好的.
我需要为线性插值编写一些代码,并且我试图找出一种最有效的方法来搜索一个SortedList<K, V>用于围绕我的目标键的上下键的键.
SortedList<int, double> xyTable = new SortedList<int, double>()
{
{1, 10}, {2, 20}, {3, 30}, {4,40}
};
double targetX = 3.5;
Run Code Online (Sandbox Code Playgroud)
搜索列表并确定3.5介于3和4之间的最有效方法是什么?我有一个适用于整数的方法/作弊(暂时将目标密钥插入列表然后找到索引)但我想我会问专业人员所以我可以生成高质量的代码.
谢谢.