Показать сообщение отдельно
Старый 11.01.2013, 20:38
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 9  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Да построена поверх.
Но есть 2 интересных штуки: SortedList и SortedMap, которые Dictionary не заменишь никак (хотя сами его используют)
плюс там где-то реализована сортировка слиянием - единственная широко известная _стабильная_ сортировка с временим O(n * lon n) (во флеш встроена какая-то нестабильная, возможно qsort)
Т.е. полезная либа, не смотря на то что Set и StringSet там ничего толкового не делают - только работу замедляют.

LinkedList в наивной (как там) реализации - тоже злое зло - начинает обгонять массив на произвольных удалениях и вставках только при очень больших значениях - а всё потому, что память без дела выделяется под Node.

Тут нужно сам объект использовать как узел(добавить ему prev/next) - мы же всё равно память под него выделяем - тогда добавление в список не жрёт столько времени.

Можно ещё с пулом нодов экспериментировать, тогда список начнёт обгонять массив пораньше.

Можно ещё раскладывать линкованный список в массиве (ну как кучу раскладывают в массив - можно разложить и список, тогда при удалении объекта просто перебиваются значения-индексы в паре мест этого массива, запоминается пустое место (запоминается в конце того же массива для последующего добавления элемента в дырку) а не двигается всё что было после этого элемента)
Но начинает обгонять простой массив на случайных вставках на числах > 100, на 10000 элементов было только в 8 раз быстрее. Вдобавок написание такого списка немного выносит мозг.


Последний раз редактировалось expl; 11.01.2013 в 20:54.