2010-03-16 50 views

回答

10

我認爲你可以使用list.Contains(value),但如果你真的需要二進制搜索列表中已經有它實現的:list.BinarySearch()

+0

啊,如果我只是想先嚐試一下最明顯的東西,BinarySearch方法正是我一直在尋找的!謝謝! – 2010-03-16 12:45:00

1

通過列表來搜索最簡單的方法是Contains

if (myValues.Contains(x)) { 

雖然這僅執行線性搜索,這意味着執行時間取決於列表的大小,並且如果該項目被發現在列表的開頭或結尾。

真正的二進制搜索可以用BinarySearch完成。爲了使二進制搜索工作,元素應該實現它自己的比較方法(實現IComparable<T>),或者使用比較器提供搜索。

if (myValues.BinarySarch(x)) { 
+0

列表<包含()是一個線性搜索以便將大於對於較大的列表(O(N二進制搜索慢得多),而不是O(日誌。 n) – 2010-03-16 14:30:17

1

有提供的二進制搜索功能:>

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