summarizing the results of the work performed
This commit is contained in:
parent
af1a7f60ab
commit
15402bc076
BIN
pomelovsd/DataStruct/analysis.png
Normal file
BIN
pomelovsd/DataStruct/analysis.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 126 KiB |
|
|
@ -1,19 +1,19 @@
|
|||
Структура,Режим,Операция,Время (сек)
|
||||
LinkedList,случайный,вставка,4.791107272799854
|
||||
LinkedList,сортированный,вставка,5.242345250000653
|
||||
LinkedList,случайный,поиск,0.12513352360037971
|
||||
LinkedList,сортированный,поиск,0.0488736079998489
|
||||
LinkedList,случайный,удаление,0.035343319200183035
|
||||
LinkedList,сортированный,удаление,0.0433979294000892
|
||||
HashTable,случайный,вставка,0.07157636960037053
|
||||
HashTable,сортированный,вставка,0.022270291600580094
|
||||
HashTable,случайный,поиск,0.0005006769999454264
|
||||
HashTable,сортированный,поиск,0.0003584531994420104
|
||||
HashTable,случайный,удаление,0.00021688099950551988
|
||||
HashTable,сортированный,удаление,0.00018475759934517556
|
||||
BinaryTree,случайный,вставка,0.04002425920043606
|
||||
BinaryTree,сортированный,вставка,0.011209254199638963
|
||||
BinaryTree,случайный,поиск,0.0007849900001019705
|
||||
BinaryTree,сортированный,поиск,0.0007412777995341457
|
||||
BinaryTree,случайный,удаление,0.0002893609998864122
|
||||
BinaryTree,сортированный,удаление,0.0005448235999210738
|
||||
LinkedList,случайный,вставка,5.446558486199502
|
||||
LinkedList,сортированный,вставка,4.543784373601374
|
||||
LinkedList,случайный,поиск,0.04706894100017962
|
||||
LinkedList,сортированный,поиск,0.04769594539902755
|
||||
LinkedList,случайный,удаление,0.03921282640003483
|
||||
LinkedList,сортированный,удаление,0.028603866600315088
|
||||
HashTable,случайный,вставка,0.04496854659882956
|
||||
HashTable,сортированный,вставка,0.01674557240039576
|
||||
HashTable,случайный,поиск,0.0002827729993441608
|
||||
HashTable,сортированный,поиск,0.0003012509994732682
|
||||
HashTable,случайный,удаление,0.0001654567997320555
|
||||
HashTable,сортированный,удаление,0.00015406959937536158
|
||||
BinaryTree,случайный,вставка,0.04737361820007209
|
||||
BinaryTree,сортированный,вставка,0.008165915000427048
|
||||
BinaryTree,случайный,поиск,0.0008410817987169139
|
||||
BinaryTree,сортированный,поиск,0.0005058431990619284
|
||||
BinaryTree,случайный,удаление,0.0004901104002783541
|
||||
BinaryTree,сортированный,удаление,0.00044584080096683466
|
||||
|
|
|
|||
|
40
pomelovsd/DataStruct/results.md
Normal file
40
pomelovsd/DataStruct/results.md
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# Предложенные вопросы:
|
||||
## Сравните:
|
||||
1) Как порядок входных данных влияет на скорость вставки в BST(деградация до O(n) на отсортированных данных).
|
||||
2) Почему хеш-таблица почти не чувствительна к порядку.
|
||||
3) Почему связный список всегда медленен при поиске.
|
||||
4) Как удаление работает в каждой структуре.
|
||||
5) Вывод должен содержать ответ на вопрос: какую структуру и для каких задач (частые вставки, частый поиск, необходимость получать данные в порядке) стоит выбирать в реальной жизни.*
|
||||
# Анализ результатов:
|
||||
![[analysis.png]]
|
||||
>График созданный для на основе замеров времени работы разных типов данных
|
||||
>P.s. Данные на графиках не точные, а приблизительные, из-за во многом случайных замеров значений
|
||||
## Выводы:
|
||||
### 1) **Как порядок входных данных влияет на скорость вставки в BST?**
|
||||
Порядок отличается очень сильно, если в обычном случае сложность равна $O(log(n))$, а в худшем случае(как раз в случае отсортированных данных) равна $O(n)$.
|
||||
>В моём случае время работы мало отличимо так как, во время замеров, я заметил, что данные записываются крайне долго за счёт особенностей реализации(бинарное дерево вырождалось в связный список) и пришлось добавить ещё одну функцию, которая будет искусственно разбивать отсортированный массив на 2 ветки, а не записывать все ветви подряд
|
||||
### 2) **Почему хеш-таблица почти не чувствительна к порядку?**
|
||||
Из-за особенностей записи данных в память. Хеш-таблица вычисляет, номер строки при помощи формулы т.е мы можем найти любой сколь угодный элемент за $O(1)$
|
||||
### 3) **Почему связный список всегда медленен при поиске?**
|
||||
Из-за способа записи. Так-как мы можем добраться до следующего элемента только путём перебора равного номеру поисковой строки, при сложности $O(n)$
|
||||
### 4) Как удаление работает в каждой структуре?
|
||||
- **Связный список**
|
||||
Рассматривается 3 случая:
|
||||
1) Если список пустой, **возращаем пустой список**
|
||||
2) Если удаляем голову, то **возвращаем, как голову следующий элемент списка**
|
||||
3) Если мы удаляем промежуточный элемент, ищем нужный элемент а потом **подменяем элементу стоящем перед элементом, который мы ищем ссылку элемента идущему после удаления**
|
||||
- **Хеш-таблица**
|
||||
Реализация считает при помощи Хеш-ключа, номер элемента
|
||||
> P.s. В моей реализации Хеш-таблица и связный список схожи по реализации, потому что Хеш-таблица использует функцию связного списка)
|
||||
- **Бинарное дерево**
|
||||
Рассмотрим так же 4 случая(немного схожа со связным списком с поправкой на то, что потомок может быть не один):
|
||||
1) Если список пустой, **возращаем пустой список**
|
||||
2) Если элемент слева, то **спускаемся в левую ветвь**
|
||||
3) Если элемент справа, то **спускаемся в правую ветвь**
|
||||
4) Если ветки 2, то **как-то оцениваем обе вершины и двигаемся к нужному результату**
|
||||
При нахождении элемента элементу слева от найденного передаём ссылку на правый от найденного элемента и наоборот левому элементу ссылку на правый
|
||||
###
|
||||
5) Какую структуру и для каких задач (частые вставки, частый поиск, необходимость получать данные в порядке) стоит выбирать в реальной жизни?
|
||||
- Для частых вставок и поиска элементов следует использовать Хеш-таблицы, из-за особенностей добавления (определение номера в таблицы при помощи математической формулы, а не порядковым номером)
|
||||
- В случае, если нам надо использовать упорядоченные данные, то следует использовать бинарное дерево(из-за особенностей хранения)
|
||||
>P.s. Вывод 0) Как же долго работает функция print()...
|
||||
Loading…
Reference in New Issue
Block a user