From 39a7c96d3e953e0450dee2fc554ce535eb9005f0 Mon Sep 17 00:00:00 2001 From: Oleg Poltoratskii <66324201+olegpoltora@users.noreply.github.com> Date: Tue, 29 Jun 2021 19:18:23 +0300 Subject: [PATCH] Update jcf.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LinkedList - уточнение по сложности алгоритмов. --- jcf.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jcf.md b/jcf.md index 3b13d78..4424529 100644 --- a/jcf.md +++ b/jcf.md @@ -263,8 +263,10 @@ FILO, First-In-Last-Out («первым пришел, последним уше `LinkedList`: + на получение элемента по индексу или значению потребуется _линейное_ время _O(N)_; ++ но доступ к первому и последнему элементу списка всегда осуществляется за _константное_ время _O(1)_ — ссылки постоянно хранятся на первый и последний элемент; + на добавление и удаление в начало или конец списка потребуется _константное_ _O(1)_; + вставка или удаление в/из произвольного место _константное_ _O(1)_; ++ но поиск позиции вставки и удаления за _линейное_ время _O(N)_; + требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка. В целом, `LinkedList` в абсолютных величинах проигрывает `ArrayList` и по потребляемой памяти, и по скорости выполнения операций. `LinkedList` предпочтительно применять, когда нужны частые операции вставки/удаления или в случаях, когда необходимо гарантированное время добавления элемента в список.