Метод:Как рассчитать временную сложность этого странного метода
List<Book> books = new List<Book>();
public List<Book> Shoot()
{
foreach(var b in books)
{
bool find = true;
foreach(var otherb in books)
{
if(otherb != b && otherb.Author == b.Author)
{
find = false;
}
}
if(find)
{
yield return b;
}
}
}
Обычно временная сложность будет O (books.Count^2), но есть если (найти) заявление во внешнем цикле, и это может изменить время цикла.
Так что мои вопросы:
- Какова временная сложность этого метода?
- Как вы его вычислили?
Я жду ответа в Интернете.
Благодарим вас заблаговременно.
Переменная 'find' изменяет время работы не более чем на O (books.Count), что меньше O (books.Count^2). Поэтому общая сложность все еще O (books.Count^2). –
Две вложенные петли, большие oh n x n. Сортировка по автору, если вы хотите сделать это счастливее. –
Я не уверен, что это имеет значение, но, вообще говоря, вложенные петли, которые вы обнаружите при выполнении сортировки зависимостей, но если они обнаружены за пределами подозрительных. Я просто не уверен, что вопрос: «Какова временная сложность, насколько это так», что мы действительно пытаемся сделать здесь, и, возможно, мы сможем сделать это намного лучше ». Если вы хотите, дайте мне знать, что бизнес просит от вас, и, возможно, мы сможем найти более упрощенный способ. –