C# 二进制搜索有序列表<;int>;

C# 二进制搜索有序列表<;int>;,c#,generics,C#,Generics,给定一个我知道要排序的列表myValues,确定X是否在给定列表中的最快方法是什么 我真的必须编写自己的二进制搜索吗?在列表中搜索最简单的方法是: 尽管这只执行线性搜索,这意味着执行时间取决于列表的大小以及是否在列表的开头或结尾找到该项 一个真正的二进制搜索可以用。为了使二进制搜索工作,元素应该实现它自己的比较方法(实现IComparable),或者使用比较器提供搜索 if (myValues.BinarySarch(x)) { 我认为您可以使用list.Contains(value),但如果

给定一个我知道要排序的
列表myValues
,确定
X
是否在给定列表中的最快方法是什么


我真的必须编写自己的二进制搜索吗?

在列表中搜索最简单的方法是:

尽管这只执行线性搜索,这意味着执行时间取决于列表的大小以及是否在列表的开头或结尾找到该项

一个真正的二进制搜索可以用。为了使二进制搜索工作,元素应该实现它自己的比较方法(实现
IComparable
),或者使用比较器提供搜索

if (myValues.BinarySarch(x)) {

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

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

啊,要是我先尝试最明显的事情就好了。BinarySearch方法正是我想要的!谢谢Contains()是一个线性搜索,因此对于较大的列表(O(n)而不是O(logn),它比二进制搜索要慢得多。
List<int> myList = new List<int>() {314,1592,6535};
Console.WriteLine("{0}: {1}", myList.BinarySearch(6535), myList[myList.BinarySearch(6535)]);