Отправляет email-рассылки с помощью сервиса Sendsay

За 2017-07-31

[prg] Re: AW: поиск элементов списка

Можно короче:
List<int> result = l1.FindAll(i=>l2.Contains(i));

Исходное сообщение > // инициализируем третий список
> List<int> l3 = new List<int>();
> // прогоняем, например, список l1 через foreach
> Foreach(int num in l1)
> {
> // сравниваем на совпадение в списке l2
> // и при попадании вносим этот элемент в список l3
> If(l2.Contains(num))
> L3.Add(num);
>
> }

   "i_chay" 2017-07-31 16:50:04 (#3510417)

[prg] Re[2]: AW: поиск элементов списка

Приветствую всех!

При таком преобразовании из списка пропадут все, кроме одного, элементы с
одинаковыми значениями. Сократив коллекцию таким образом, вы, разумеется,
ускорите поиск.
И время, которое потребуется для преобразования, не учтено в ваших расчётах,
а ведь при этом тоже выполняется сравнение элементов исходного списка.
Успехов. Анатолий.
Исходное сообщение > Думаю стоит уточнить, что если l2 ест коллекция типа list<int>, то
> l2.Contains(num) будет выполнятся за O(n), поэтому прежде стоит
> преобразовать коллекцию l2 в hashset<int>, где Contains в подавляющем
> большинстве случаев выполнится за O(1).

   "i_chay" 2017-07-31 16:48:35 (#3510415)

[prg] Re: AW: поиск элементов списка

Здравствуйте.

Думаю стоит уточнить, что если l2 ест коллекция типа list<int>, то
l2.Contains(num) будет выполнятся за O(n), поэтому прежде стоит
преобразовать коллекцию l2 в hashset<int>, где Contains в подавляющем
большинстве случаев выполнится за O(1).

С уважением, Константин.

   2017-07-31 09:51:09 (#3510363)