Я делаю некоторые сравнения о том, где отфильтровать элементы из списка. Я не уверен в том, что буду делать это напрямую, что будет O (n), или с помощью .Where(). I made a simple example to test .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();
}
}