Самый быстрый способ найти объект в списке?

У меня есть неотсортированный список строк. Я могу поместить эти объекты в массив, Список, SortedList, безотносительно.

Я должен найти самый быстрый способ искать строку в этом списке. Действительно ли я - более обеспеченный дамп список в массив, сортируя его, затем реализовывая двоичный поиск? Или платформа позволяет делать это?

Спасибо

P.S. Используя VS2008 против.NET 2.0

13
задан AngryHacker 16 January 2010 в 00:29
поделиться

3 ответа

Если ваша цель - просто сделать это очень быстро, чтобы найти строки в коллекции, положить их в HashSet .

hashset.tainsains - это метод O (1), и строки имеют хороший хеш-алгоритм по умолчанию, поэтому будет трудно сделать более быструю рутину, чем это.


Редактировать:

, поскольку вы используете .NET 2, я бы просто сделал словарь и используйте одну и ту же строку для ключа и значения. Dictinoary . LIGHTAKES также является o (1), и будет намного быстрее, чем любой попытку поиска на основе списков.

23
ответ дан 1 December 2019 в 21:52
поделиться

Если вам нужно только найти Один объект, один раз, просто начать в начале и посмотреть на каждого, пока не найдешь его. Если вам нужно будет повторить эту работу, несколько раз найдя в тот же список, чтобы найти разные элементы, то сортировать его сохранить сортированный список и сделать двоичный поиск ...

2
ответ дан 1 December 2019 в 21:52
поделиться

Я не уверен, будет ли это любое использование для вас, но это будет довольно простой способ сделать это, не уверен на точной «скорости» этого.

List<string> collection = new List<string>();

collection.Sort();

foreach(string value in collection)
{
   if(value == "stringToLookFor")
   {
       return value;
   }
{
-1
ответ дан 1 December 2019 в 21:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: