Смекни!
smekni.com

Двоичные деревья поиска (стр. 4 из 5)

Количество элементов ДДП КЧД Постоянно сортированный массив Несортированный массив Массив с постсортировкой
1000 4243 108 136 1354 134
2000 19295 250 289 5401 286
3000 71271 391 448 25373 441
4000 79819 560 615 23861 607
5000 124468 759 787 38862 776
6000 180029 956 954 55303 941
7000 246745 1199 1165 75570 1111
8000 487187 1412 1307 98729 1330
9000 1062128 1906 1494 134470 1474
10000 1807235 2068 1719 154774 1688

Таблица 2. Поиск элемента (возрастающие ключи).

Количество элементов ДДП КЧД Постоянно сортированный массив Несортированный массив Массив с постсортировкой
1000 308 419 2077 2047 2080
2000 639 876 13422 8046 8179
3000 1001 1372 25092 30902 18407
4000 1380 1831 32572 32473 32651
5000 1680 2286 50846 51001 50962
6000 2105 2891 73321 73114 73202
7000 2569 3514 99578 100059 99801
8000 3025 4384 129833 129897 130054
9000 3484 5033 164846 194361 164264
10000 4050 5690 203207 202979 202738

Таблица 3. Удаление элемента по ключу (возрастающие ключи).

Количество элементов ДДП КЧД Постоянно сортированный массив Несортированный массив Массив с постсортировкой
1000 547 (25) 548 (13) 1800 34 362
2000 1133 (25) 1171 (14) 5534 70 734
3000 1723 (28) 1905 (14) 12065 150 1174
4000 2891 (28) 2985 (15) 20867 223 1626
5000 3604 (28) 4024 (15) 32927 248 1962
6000 4336 (29) 4970 (15) 44720 373 2537
7000 5196 (29) 5794 (16) 60723 443 2977
8000 6051 (30) 6972 (16) 77482 511 3485
9000 6994 (30) 7519 (16) 104219 590 3821
10000 9544 (31) 10303 (16) 118760 584 4408

Таблица 4. Добавление элемента (случайные ключи)

Количество элементов ДДП КЧД Постоянно сортированный массив Несортированный массив Массив с постсортировкой
1000 181 136 159 1354 155
2000 406 307 347 5412 339
3000 653 494 551 12927 538
4000 925 702 765 23936 747
5000 1223 949 1024 37861 962
6000 1532 1142 1216 55124 1185
7000 1893 1494 1453 75628 1403
8000 2477 1833 1679 98802 1631
9000 2943 2390 1994 125570 1858
10000 3395 2937 2228 154791 2108

Таблица 5. Поиск элемента (случайные ключи)

Количество элементов ДДП КЧД Постоянно сортированный массив Несортированный массив Массив с постсортировкой
1000 469 517 1149 2014 1195
2000 995 1079 4381 8054 4387
3000 1557 1756 9673 18191 9639
4000 2272 2424 17071 32451 17105
5000 3070 3019 27380 50665 26954
6000 3528 3618 39294 72996 39227
7000 4322 4542 53255 99402 53309
8000 5299 5531 71406 129964 70766
9000 6180 6553 89583 164943 89935
10000 7527 7797 112190 202993 111439

Таблица 6. Удаление элемента по ключу (случайные ключи)

Постоянно сортированный массив – это массив, в который элементы вставляются так, что бы он сохранял свойство упорядоченности. Массив с постсортировкой – это массив, в который сначала вставляются все элементы, а потом он сортируется алгоритмом быстрой сортировки. Данные таблицы, безусловно, не являются истиной в последней инстанции, но позволят вам прикинуть, какая из структур данных будет наиболее производительна в вашей программе, учитывая предполагаемую вероятность операций вставки, удаления и поиска. Так, например, массив с постсортировкой является весьма привлекательным по производительности, но совершенно не подходит для комплексных работ, так как предполагает фиксированный порядок действий – сначала только добавление элементов, а после использование полученной информации. Другие структуры данных лишены этого недостатка. Для большого числа (порядка 10 000) случайных элементов время поиска в ДДП и КЧД становится практически одинаковым. Как следствие, можно реализовать более простые алгоритмы, исходя из некоторых свойств входных данных. С другой стороны, в крайнем случае (возрастающие элементы) ДДП отстают от КЧД на несколько порядков. Постоянно сортированный массив является абсолютным победителем по скорости, но не имеет естественной поддержки отношений родитель-ребёнок. Если они вам нужны, придётся реализовывать их поддержку самостоятельно. Также надо всегда помнить, что при количестве элементов порядка тысячи, асимптотические показатели скорости ещё не вполне вступили в силу и теоретически более быстрые структуры данных на практике могут оказаться более медленными. Так, например, скорость поиска в КЧД и массиве с пресортировкой до 5000-7000 практически одинакова. Так же надо заметить, что тестирование производилось на объектах относительно малого размера (8 байт), сравнимого с размером указателя (4 байта). Все виды массивов сортированных подразумевают весьма интенсивное копирование элементов, в то время как деревья работают с указателями. При размере элемента, на порядки превышающем размеры указателя, акценты сместятся весьма значительно. Например, ниже приведены результаты испытания с ключом типа int (32-x битное целое) и битовыми данными размером в 256 байт.

Количество элементов ДДП КЧД Постоянно сортированный массив Не сортированный массив Массив с постсортировкой
1000 5868 (1000) 1663 (17) 1430 1154 1035
2000 140888 (2000) 3694 (19) 3476 2460 2808
3000 368748 (3000) 5815 (20) 5372 3848 4382
4000 721328 (4000) 7271 (21) 7274 5175 6035
5000 1208373 (5000) 9349 (22) 9247 6670 7619
6000 1752135 (6000) 11395 (22) 11046 7778 9168
7000 2501167 (7000) 13503 (23) 13327 9378 10764
8000 3334948 (8000) 15753 (23) 18222 12560 15267
9000 4266560 (9000) 21600 (24) 20564 15391 17430
10000 5421499 (10000) 24105 (24) 24064 17152 19341

Таблица 7. Добавление элемента (возрастающие ключи)

Количество элементов ДДП КЧД Постоянно сортированный массив Не сортированный массив Массив с постсортировкой
1000 4289 132 242 1621 230
2000 134074 303 605 6903 530
3000 359985 457 961 24268 806
4000 706129 787 1336 27610 1121
5000 1183405 959 1736 44660 1516
6000 1730699 1116 2138 69068 1841
7000 2462759 1344 2494 103158 2251
8000 3293519 1565 2871 159274 2617
9000 4215750 1840 3284 278697 2923
10000 5361524 2060 3698 513268 3303

Таблица 8. Поиск элемента (возрастающие ключи)