Я делаю несколько сравнений о том, где отфильтровывать элементы из списка. Я не уверен, что сделаю это напрямую, что будет 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();
}
}