Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fastest way to find an item in a list?

I have an unsorted list of strings. I can place these items in an array, List, SortedList, whatever.

I need to find the fastest way of looking up a string in this list. Am I better off dumping the list into an array, sorting it, then implementing binary search? Or does the framework provide a way to do this?

Thanks

P.S. Using VS2008 against .NET 2.0

like image 609
AngryHacker Avatar asked Jan 16 '10 00:01

AngryHacker


1 Answers

If your goal is just to make it very fast to find the strings in a collection, put them into a HashSet.

HashSet.Contains is an O(1) method, and strings have a good hash algorithm by default, so it will be difficult to make a faster routine than this.


Edit:

Since you're using .NET 2, I would just do Dictionary<string,string> and use the same string for key and value. Dictinoary<TKey,TValue>.Contains is also O(1), and will be much faster than any list-based searching you attempt.

like image 195
Reed Copsey Avatar answered Oct 26 '22 14:10

Reed Copsey