Что такое большое O в linq .where?

Я делаю несколько сравнений о том, где отфильтровывать элементы из списка. Я не уверен, что сделаю это напрямую, что будет O (n) или с использованием .Where(). Я сделал простой пример для проверки .Where()на простом наборе данных. Есть n=100 элементов, и когда я запускаю отладчик на строке в функции BigO(), она проходит ровно 100 раз, заставляя меня думать, что .Where() также O(n). Чего я не мог понять, так это того, где данные сохранялись во время операции, и я не был уверен, что это увеличивает сложность.

Я что-то упустил или .Where() O(n)?

public class ListerFactory
{

 public class Lister
 {
  bool includeItem { get; set; }
 }

 List<Lister> someList { get; set; }

 public ListerFactory()
 {
  someList = new List<Lister>();
  BuildLister();
 }    

 public void BuildLister()
 {
  for(int i = 0; i < 100; i++)
  {
   var inc = new Lister();
   inc.includeItem = i % 2;
   someList.Add(inc);
  }
  BigO();
 }

 public void BigO()
 {
  someList = someList.Where(thisList => thisList.includeItem == true).ToList();
 }
}
14
задан Travis J 25 March 2012 в 23:07
поделиться