二进制搜索有序List <int> </int>

时间:2010-03-16 12:36:54

标签: c# generics

鉴于我知道要订购的List<int> myValues,确定X是否在给定列表中的最快方法是什么?

我真的必须编写自己的二分查找吗?

3 个答案:

答案 0 :(得分:10)

我认为您可以使用list.Contains(value),但如果您确实需要二进制搜索列表已经实现了它:list.BinarySearch()

答案 1 :(得分:1)

搜索列表的最简单方法是Contains

if (myValues.Contains(x)) {

虽然这只执行线性搜索,这意味着执行时间取决于列表的大小,以及项目是在列表的开头还是在结尾处找到。

可以使用BinarySearch进行真正的二进制搜索。要使二进制搜索工作,元素应该实现它自己的比较方法(实现IComparable<T>),或者使用比较器提供搜索。

if (myValues.BinarySarch(x)) {

答案 2 :(得分:1)

提供了二进制搜索功能:

List<int> myList = new List<int>() {314,1592,6535};
Console.WriteLine("{0}: {1}", myList.BinarySearch(6535), myList[myList.BinarySearch(6535)]);