鉴于我知道要订购的List<int> myValues
,确定X
是否在给定列表中的最快方法是什么?
我真的必须编写自己的二分查找吗?
答案 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)]);