From 13315fd2c9017ce207c295282cd9780813bd04fb Mon Sep 17 00:00:00 2001 From: SerKin0 <71343548+SerKin0@users.noreply.github.com> Date: Mon, 25 May 2026 11:27:50 +0300 Subject: [PATCH] [1] to merge --- skorohodovsa/task_1/README.md | 75 +++++++++ skorohodovsa/task_1/binary_tree.py | 207 +++++++++++++----------- skorohodovsa/task_1/graphics.png | Bin 0 -> 183937 bytes skorohodovsa/task_1/hash_table.py | 84 ++++++++++ skorohodovsa/task_1/results.csv | 36 +++++ skorohodovsa/task_1/task.py | 173 ++++++++++++++++++++ skorohodovsa/task_1/test/test_task_2.py | 60 +++++++ skorohodovsa/task_1/test/test_task_3.py | 45 ++++++ 8 files changed, 583 insertions(+), 97 deletions(-) create mode 100644 skorohodovsa/task_1/README.md create mode 100644 skorohodovsa/task_1/graphics.png create mode 100644 skorohodovsa/task_1/hash_table.py create mode 100644 skorohodovsa/task_1/results.csv create mode 100644 skorohodovsa/task_1/task.py create mode 100644 skorohodovsa/task_1/test/test_task_3.py diff --git a/skorohodovsa/task_1/README.md b/skorohodovsa/task_1/README.md new file mode 100644 index 0000000..b45fdca --- /dev/null +++ b/skorohodovsa/task_1/README.md @@ -0,0 +1,75 @@ +# ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ + +## Тема: Сравнительный анализ структур данных для телефонной книги + +### Цель работы +Реализовать и сравнить производительность трех структур данных: бинарного дерева поиска, хеш-таблицы и связного списка. + +### Ход работы + +#### 1. Реализованы структуры данных +- **Binary Search Tree (BST)** - бинарное дерево поиска +- **Hash Table** - хеш-таблица с методом цепочек +- **Linked List** - односвязный список + +#### 2. Проведены эксперименты + +Каждый эксперимент повторен 5 раз, результаты сохранены в файл `results.csv` + +**Эксперимент 1:** Вставка элементов (случайные данные) +**Эксперимент 2:** Вставка элементов (отсортированные данные) +**Эксперимент 3:** Поиск 100 элементов + +### Результаты измерений (средние значения) + +| Размер | BST случайный | BST отсортированный | Хеш-таблица | Связный список | +|--------|---------------|--------------------|-------------|----------------| +| 100 | 0.0001 сек | 0.0004 сек | 0.0002 сек | 0.0005 сек | +| 200 | 0.0002 сек | 0.0023 сек | 0.0006 сек | 0.0020 сек | +| 500 | 0.0007 сек | 0.0259 сек | 0.0100 сек | 0.0123 сек | +| 1000 | 0.0034 сек | 0.0910 сек | 0.0250 сек | 0.0340 сек | +| 2000 | 0.0075 сек | 0.3500 сек | 0.0580 сек | 0.0820 сек | + +**Поиск 100 элементов (2000 записей):** +- BST: 0.0012 сек +- Хеш-таблица: 0.00055 сек +- Связный список: 0.0032 сек + +### Графики + +*(вставьте сюда graphics.png)* + +**График 1:** Сравнение скорости вставки +**График 2:** Деградация BST на отсортированных данных +**График 3:** Сравнение скорости поиска +**График 4:** Во сколько раз BST медленнее на отсортированных данных + +### Анализ результатов + +**1. Влияние порядка данных на BST** +При вставке отсортированных данных BST вырождается в связный список. На 2000 записях замедление составило 46.7 раз. Сложность падает с O(log n) до O(n). + +**2. Хеш-таблица и порядок данных** +Хеш-таблица не чувствительна к порядку, так как хеш-функция вычисляет позицию напрямую, без сравнения с другими элементами. + +**3. Связный список при поиске** +Всегда медленен при поиске, так как требует последовательного перебора O(n) до нахождения элемента. + +**4. Удаление элементов** +- **BST:** требует поиска узла и перестроения поддеревьев (сложный случай с двумя детьми) +- **Хеш-таблица:** помечает элемент как deleted, при переполнении делает рехеширование +- **Связный список:** перелинковывает указатели предыдущего и следующего узлов + +### Вывод + +**Рекомендации по выбору структуры данных:** + +| Задача | Рекомендуемая структура | Причина | +|--------|------------------------|---------| +| Частый поиск | Хеш-таблица | O(1) в среднем | +| Частые вставки | Хеш-таблица | O(1) в среднем | +| Нужна сортировка | BST | автоматическая сортировка | +| Мало данных (<100) | Связный список | простая реализация | +| Максимальная скорость | Хеш-таблица | лучшая производительность | + +**Итог:** Для телефонной книги с большим количеством записей и частым поиском оптимальна **хеш-таблица**. Если требуется выводить контакты в алфавитном порядке - **BST**. Связный список подходит только для учебных целей или очень малых объемов данных. diff --git a/skorohodovsa/task_1/binary_tree.py b/skorohodovsa/task_1/binary_tree.py index e95147e..8627980 100644 --- a/skorohodovsa/task_1/binary_tree.py +++ b/skorohodovsa/task_1/binary_tree.py @@ -5,7 +5,6 @@ class BSTNode: self.left = None self.right = None - class BinarySearchTree: def __init__(self): self.root = None @@ -13,121 +12,135 @@ class BinarySearchTree: def insert(self, name: str, phone: str) -> None: if self.root is None: self.root = BSTNode(name, phone) - else: - self._insert_recursive(self.root, name, phone) - - def _insert_recursive(self, node: BSTNode, name: str, phone: str) -> BSTNode: - if node is None: - return BSTNode(name, phone) + return - if name < node.name: - node.left = self._insert_recursive(node.left, name, phone) - elif name > node.name: - node.right = self._insert_recursive(node.right, name, phone) - else: - node.phone = phone - - return node + current = self.root + while True: + if name < current.name: + if current.left is None: + current.left = BSTNode(name, phone) + break + current = current.left + elif name > current.name: + if current.right is None: + current.right = BSTNode(name, phone) + break + current = current.right + else: + current.phone = phone + break def search(self, name: str): - return self._search_recursive(self.root, name) - - def _search_recursive(self, node: BSTNode, name: str): - if node is None: - return None - - if name == node.name: - return node.phone - elif name < node.name: - return self._search_recursive(node.left, name) - else: - return self._search_recursive(node.right, name) + current = self.root + while current: + if name == current.name: + return current.phone + elif name < current.name: + current = current.left + else: + current = current.right + return None def delete(self, name: str) -> bool: - self.root, deleted = self._delete_recursive(self.root, name) - return deleted - - def _delete_recursive(self, node: BSTNode, name: str): - if node is None: - return None, False + parent = None + current = self.root + + while current and current.name != name: + parent = current + if name < current.name: + current = current.left + else: + current = current.right + + if current is None: + return False + + if current.left is None and current.right is None: + if parent is None: + self.root = None + elif parent.left == current: + parent.left = None + else: + parent.right = None + + elif current.left is None: + if parent is None: + self.root = current.right + elif parent.left == current: + parent.left = current.right + else: + parent.right = current.right + + elif current.right is None: + if parent is None: + self.root = current.left + elif parent.left == current: + parent.left = current.left + else: + parent.right = current.left - deleted = False - if name < node.name: - node.left, deleted = self._delete_recursive(node.left, name) - elif name > node.name: - node.right, deleted = self._delete_recursive(node.right, name) else: - deleted = True + successor_parent = current + successor = current.right + while successor.left: + successor_parent = successor + successor = successor.left - if node.left is None and node.right is None: - return None, True + current.name = successor.name + current.phone = successor.phone - if node.left is None: - return node.right, True - if node.right is None: - return node.left, True - - min_node = self._find_min(node.right) - node.name = min_node.name - node.phone = min_node.phone - node.right, _ = self._delete_recursive(node.right, min_node.name) + if successor_parent.left == successor: + successor_parent.left = successor.right + else: + successor_parent.right = successor.right - return node, deleted - - def _find_min(self, node: BSTNode) -> BSTNode: - current = node - while current.left: - current = current.left - return current + return True def inorder(self) -> list: result = [] - self._inorder_recursive(self.root, result) + stack = [] + current = self.root + + while stack or current: + while current: + stack.append(current) + current = current.left + current = stack.pop() + result.append({'name': current.name, 'phone': current.phone}) + current = current.right + return result - def _inorder_recursive(self, node: BSTNode, result: list) -> None: - if node: - self._inorder_recursive(node.left, result) - result.append({'name': node.name, 'phone': node.phone}) - self._inorder_recursive(node.right, result) - - def preorder(self) -> list: - result = [] - self._preorder_recursive(self.root, result) - return result - - def _preorder_recursive(self, node: BSTNode, result: list) -> None: - if node: - result.append({'name': node.name, 'phone': node.phone}) - self._preorder_recursive(node.left, result) - self._preorder_recursive(node.right, result) - - def postorder(self) -> list: - result = [] - self._postorder_recursive(self.root, result) - return result - - def _postorder_recursive(self, node: BSTNode, result: list) -> None: - if node: - self._postorder_recursive(node.left, result) - self._postorder_recursive(node.right, result) - result.append({'name': node.name, 'phone': node.phone}) - def get_height(self) -> int: - return self._height_recursive(self.root) - - def _height_recursive(self, node: BSTNode) -> int: - if node is None: + if self.root is None: return 0 - return 1 + max(self._height_recursive(node.left), self._height_recursive(node.right)) + + queue = [(self.root, 1)] + max_height = 0 + + while queue: + node, height = queue.pop(0) + max_height = max(max_height, height) + if node.left: + queue.append((node.left, height + 1)) + if node.right: + queue.append((node.right, height + 1)) + + return max_height def get_size(self) -> int: - return self._size_recursive(self.root) - - def _size_recursive(self, node: BSTNode) -> int: - if node is None: - return 0 - return 1 + self._size_recursive(node.left) + self._size_recursive(node.right) + count = 0 + stack = [self.root] if self.root else [] + + while stack: + node = stack.pop() + count += 1 + if node.left: + stack.append(node.left) + if node.right: + stack.append(node.right) + + return count def clear(self) -> None: self.root = None diff --git a/skorohodovsa/task_1/graphics.png b/skorohodovsa/task_1/graphics.png new file mode 100644 index 0000000000000000000000000000000000000000..cbb5af1da22e80c70a2de4cd5fde6b37d0acc782 GIT binary patch literal 183937 zcmeFZXH-+&`z?xeP{0BxAVmRb0*Vv?=^dmu=_oJKi$DMgp$do^niK))z4s1@D2jsg zKWfRdt!I*h~2-<;~Eg)>n|rR?)AU^Ld?g{MZDJrG7Qc_=c{eyPeyk2^4Y(0E_vf7 zWar4pbktSMg5Pf}&~=;boc3=U9_8*ScnLGdmkVy{^8aI~8*@|7xq>$S;^kRpVO73D zs*>iLmvpT3gwnK+5DTX(q|KnM@TXhfd;HOv9YjLtgWq@C{C|IcFT47EJrudRLkeyD z3=TH%{r`0+Gk@b+XZf#ZXOFb%$`t?G^OtgzU<&@%5mB!8f8PeP@qb`icowcJh0T{5 zP5 z;qV0+_GhX0@hK}gcbbUh@2}vznX1Fub!22b{?@IYnUKxd$*`l%wtYAE@~gsTUr&zk zN=H9li_fpDm*ur4aLUi73Yps0|7W?RC_n>6tQ!A`f(~Ax z^yz|N9!4QEtzI_A&^1V86e$o~;FC*i>||ta-oL+RPBpukUj1&=9sCT6ttgwvU;|9l z97ZsqJ8*_;cRtWx74zf{{S(P~-#0=5>@9H5EE}F^93A12S012ZDGQh1nSF`*6vs3t zkQe&IyvhP{jxlKdS)A8&eXmakoI_@o#nN^;iY-<4@y8c*VuCIh1gsTG^qy<+$Qa7J z*B?UM^3r(C3U}B-9BrLHi0|c zYP(TS2w@-n^K0@a>}1s{Ip2 zjBpKR%hc)TDJ}?`l_#y?UbBci#U7ONZ?;E#zTA|&H&KBW9XN!o>rON1s1k32jT-4t~F-r$n z3oexQOO;o}26Mbl za`11#Qs&k|SJx%cf<2cz7#J}Jr#>FaDc;*!lhAb4KDbw``;V%OiDrLbiEdi8UWS;M zqX098)DVQX=eX~iKUr-x!TD)cj6J6apK=YpHTE?JOkJ1r-=E){ehp@{dDM2?s#0r-9wl6^h4|V12cD^F789mm(>dA?E zR_;_~*A=++AmtioMjhg?66cD->&}_1#>O&m%qHDXv-LH9l9z`1l(DGS;zO{Ka!0*1 zJXf{SY?!C$9bh3S7fy+28=uAASHgGiY;5;)2lbo!jfk?-S(F)Y$~dfQz{&N74^~J- zOc|><8QIr6oq=zS(A(ecLiaqou$5KwkmlNR5dHA&&sXQB8=O{@1m1fze$ZNKsq=yA zZoUFbY(}hoi9Cq2Oshx}zOmVcVeH6duQ{FdsOw0fbjg9Fdx${25)E?XIvNv}|J33x zLn*s{o64KhqP`~OTZG*uyQEZ#C<22xqE5QLmn$tmK)+;h%XAX(bV$_k81R;M5=E7 z1JfcrUL#u6+RCE$^j{;$oO4DI=6Ol8k3!abTAug(<>*al`}qJR&Db1%8U{T%SY5z> zz^#np)lRt-LxV?0SX%~Bfy7}2>sGKErJwy!M{6>cIk;g_6iEW2C!=R4mt{kwRCdkQm}eDSR&h2 zhs=BDsaiYSN!|D^bgM&Ptr7crG(xIJlT;{4ETgGg1;d09SaSaGW!7tT`P?)Bef#^?OX~W#rv>Z z2JhDvi%d#%pA~5(CJd&FW*-HCr18V=_xJUasUq)%&S&z08`|~9ATj)KDAHQ~7_&mp zBK%WkGs~kkUOwzNxNtCC%uenkS=<4!ziypJcjXq}qrEXLZpcoyq+7}wac5C0k7W&c zdh)t!|Ho_66d~2rVEZU2j*;^RBe&vvM=LM!A@tsPmpN+eY)e&k*{WmnP$=4obV#7H zZ+iSGw%xkL{lKg00|7r-WofH>T|V&k)>apO4_Ze~Mc>CFYAtzkZOkQRHZRhm#+tJveB>{!@d z>pJ$R>tPKz09)|0l-I1}NsFxCPhaFYd>8f^2oo{$_GcT|cCq{UibK`N6p=t;fPs~| z)iR=ZRE^oL)r!B&|HGjSNwMnT@WS6VKCB;cB--F4d5zPfcdEp(H!2KYg>k$Se!Lxr z2}4Pvp1oBHKiPL9&if}qH^0C+u7p}DG~;`m#HK?XXTZjX0WbqG0?xlv+grAjol%3Nx1?Kg7nP6YjAZs%4f?nfOFHYXAifSVHC z>WjZ}WA5!@3o?E1tw171YU8yy;@!{Io!YrwI|}qn*DZ#?p;hQmOU3Cg&3~OH_51*fZ7uX-U&TA7dmGXG7rV~2-zcJ&R^}^tM_q;Xj3AL;`!_0 zCDI;CKFW3Hr&d=KP||xXPd>kDf5jql*s=_g({JM3^}A2hqX?UGZFQKv(as|-8w7(idNU z9VH{vzIUGWwr`Q#&jFFThlHaF))LKoA|g?mk{*4p8kJo6;DvKw(?S2mO1~uCkuD>- zVolMSH*f{N&QKT>1bVx^Z7|QPg|k;yY@jAZ3<%Pmjm)?*y8hJ`Ba3mKNeJ=`q5b&$ zdSMlm026RZqv9IPAVFA3VFC-hT5#@7@tTuY(|cL}*iiVCIqx`2Pc7{eQU5jgSLjR~h*Gn?yF#})z;OdZ_n}x}%a?+Bj4td-O4q*qM0aRR1po6~~ zrKN+<)6H|Ue`^ULxL++e{hjU8IWiGs)#jbUaU*}lE*TdOmk8cy=%3dngIAAAk8kf! z7%Fubvs&BtS4wD5jyKeJmAm@Gd^kTH<^p8<4C9as-I8rnh=!};KzJGa;5(*qbq3tJ zdBijV)@4IOI-0Waf#5kSe^>hSn3Fi~E6u~oy^jBUV(LO(kq`U$t4oZXGapuAEG7}K zW<-3BXkK8hs3Vmd-&pBS44O0UhquP;m1t(U{vy^;ud zu=D-iR(HWp92#HXWb38sTxQ0qZD`%>bfw6o(fw`g#4WQg!vL;zA?UrtYuXNXQEdWp zTv41f*q!IZg`fqZDR)$B6QXVQQLn|E~9%+%@4!lpc zK2*51`tD)X$>MkA)tql{1-eKD_+zk#`$i@j>O5t!NW{q@&Mw`C$Mj`@Iu#ku&NWF_ zqtIq70Gg)9iil*=D|H4|t0Qbx-52E3gTKGNg`5%>p(CP}pltg`Ya+Kzug4}dA z_HOMpusasu!%V;De2|b!t?YyzuesI>-$wJl(=M(BVlL1{CeN$IUWh+E>Am^;S2UBN zZ{3(+CV&E8VsPLt!V{~}f-$~Sb9n&7z(p);Z9`jM8{rOzYPDfPKcSCj=tnPy`7D)#dH5nP)3ssO*qcwVlFYHe3&aM}2xK%_@HU z1`t-zRXWj^PhecBVMUisw%dzy_-|CU2tBTtwz9s_Ep~1e`(t+b5wJ)6Zp52;(Uh=khT;9$e)Gk6l_aGG%uu z&*@RSAlu;O7@>jD`rz#!`^LrW9oN5?>SzDZ3WjD5n)q+7$`25i(M)Cl1PBLa!)|%lj@&$g4%8rA_6BJ!q()OyV|<0CtjO5S&=Aerd1ScBfyTn3NulBAB#Hco*ODwvgy_ zjDJ&z&J}9B{zn|wA|#b1U(fyJNEA9lu`93hu)U}m7G5{-?ke`dWo@rJBt(xVd9UDL zQ5z$6g)Xf^Ba<(Bd$xVxW|A4k#&6iUV7S8F33m;Bw+drnQZz!KO^-K$LG3k7NER?5 z|ELTW6*jJ@b+GfZ>#DDS0I6e9`ohMiM@q3t!w*2EVbP=gl|+}r3k;25=!k?hFUj=}>|-6C?yEQe$QyIVoBX#vPg6vY5Y27cqu;Col+q|95cKBqNy z+$*RSm7($>!(BpnA}$m}U$Mpqf0`g~s-8OCVb8oVoBqmxxYqs%8P;=TQ>4^=`$BTQ zG5^5J{IQFRv}wCbHhHZNGbO@yZasXrl-t4y%4(0~bY885{f9T%ty0JF?E4B7Zp`r# zzt)0{;P!B`@$$}}<9MqgGf6+=Rc-*&-sF4O>a5cm)p-?;wG=d7UbF79YI?fm0}nJ1 z=^SQCqgzVW;(9j14%vV*8{G(jf~jHl0Tu=bYQcSumXqk3w0?!D4{1l_y^e`Gm@ zH0s8`AMe~+HtI6t{oNCnV2`kD^#az!vi4w>!fD0JTQM2;x2%DgqF^g zbTbM4J@~y(J`8z?t@_8g3)O1gWe1=oOEYINrtx=4akwD!CU>1(?FMDMv&?o0rX>vX z!)9j@%^5WR*m*D=5{?A7>IP;|-hpx)udN&-dBzIVl8<&snx~rs;iGk38)Oo@RQJ> zgwEwyj(KUbya5o$aw>_$lSJLb(=w9@3`bRN@DI8w2PEPMX)<%IIXqRv0+v4Ddbu*3 z?WM*U;aHe1hG3WRz8;Xvt}5)oqx+3bo0CqLt*rS38!#5rKJL3-!0gOb0=*C?$NzLF z>(@BdEAOqC&P%zM-A6?hD$r}@ydo&I5>|DgrHO1gmu}7G@wOOU@p2Sw@vz)XwH#tu zwBVtA%Y}qI{;Nl<9?naZ4rcBf?S8(qk2=5#nmFBO#i->X?d0E_}`| zGa$z_URi{$lcK41Uy?r@0KCakQ;%24W({M5wn={+Vy=g{h%-4XmEzPB9xP~1Dg5vj z?4|w@G-7XD)jn{>IXyWw!BU9b{I?1x`Qm{V6Qu9f>T%J|r`Z+{yG~;WS>?`v9tGPQ zxv1Knz1jVQ=V?%5BQ-w&ghxsuZkrUpR5sY@RJ)kFeO*OK(liJkgQ&;S+?lrzZh6)d#x}INiTMQZG zt7*6F(UbJC=Fo3Mxv4qvW&8e8D!Vx0Ur6%LEcq$d7EqT;mZuPwNj}!56>vRG!R^3y^lboeia)=jYN)^YR-v#mlW#4Q9rsHvQ?Gw1ix zx(7k~6Ld9RdUsY(s=zGkOjm=mPOXGlFSq7j8=*#0ujRad{g8JDgROQknK8}1>RdBmIg{TXPQ zd_`R^{8>dxBUc=Ycg#&aR!W;9^)w8hw;g@fqEg8=K*?0u$@OO zJ^bdn^x@Kl_yylR@82Og!d#Oz=$FBm*OqpuO0}5ujAdxdk@r#o zMG@oK9aFgZ3)1>xuH8~g`3{y$r|QtP^P)wLE_~O5rWX)KQHbHT^n95t;SwD8o2yne z!$qkkt8sb6yJ}qLSlvA^##o| zPg}UD@ajuOso>V6%EzPR&QYurYvi&JQtF>&ZYuG%X`P;sR-#$eIR&tx+w3RUKd26Y zhMh!-WXeI!!b>!U3WQX^iHiPglv5&sdEGvpY8~_YMn^sF(^oZFO`xqlf1Zpi$v(gf zxA2EHaPul-9jtJ6Hl)~jj!#I(?vn>%wlZ=vZhfMx%eWpPvkZw=Mf{y$#I8+PTLVVk z`K;m`-2m5m4btanTXQi7tTVpO_;<(&s4{FxehiwltogM|0ScjWqTI0EbI(MOL0XA^G=CiC)VwMb)uR$E8@z>CY$-Xp18RNeDpJ zr#dc{8yDHmp$Fd-u9z3i_Ta1D#2kk6HSE}zk1%9}5x;F}UHA$8j_WopH@b1vtSI6- zgS2s;t6!6pa76EUuCW6_vm^t*a;Cwz^QUFwO-LEp?hOMWmT63piiq4EB-EWp&#%eJ z9mB*aC#hJq6?4`8U4Hn5uNVGPO$x^>9e~1+x7B%af9i9MraKbAN-YQyxm``rpLzq^!vNVnflhARj6_N zW+V-lZ@7q`J!hz!2B*W~cJ;6h%mJcYbw%|^a(qrzNVCV08vfHLu3oN$rMY+~kqdUT zr~mi3$m=)E5H9ye;-jEwjS2lN*8O59yK~IKG6k9qCpq(9s^#8D`BekFvCRuqIWmc; zjAR2zYia)Oy>Ec;{N$cZX|MHEvgO{S;y9#8(_7?xX6-YU>4NNgov~(f((lR05`BI* z`mV8?qiZ{7%8h3LX#kP=%iOnQ*B=tiI^I;Qwj?KH+6#zlc8i1iEi7h?D`19wF%B|< zkShx!Ov#Ip*W6t~ddUXrTSE{2)~B1cCgmzXXU`bwT9U>Q&*c&UlkvQK9(JmgHR^rY z)%Pp2^PT6alTnM?IOpQ;UsnXC<|dO%Jvk0ZB0JiEKfBFZemX#WM~J$d+M<=op4!lx zF*^V|+5UeG$as{V#A+6({nM3^H9l~i` zR8=a(eAN&Wsl7bfIAFVM)g9bWLWMsS^2yfdM9TcRWFT!%XnSF;`2M8s!wFZ88X-Kk zR^yBehVBf>ylpW5?)-L}p?nNtW+BuOSsfEWO{Sc+t)Eyo#$QpAKm%8$``l$jU_UPW z5})DcAk>)-&|gNmi8!1 zPAXtB;x7!wgP}HmvJ;xYwAut)Jrc`iofB>e_+*FK1o~5;)bV%<`{d&GhLnAOA~#;s zX8lW77?BNPOT9AbXq5*xu z$uc=r4I~WmCQdEq+@fn_pY9M?S;aIMGg7B)*5%~xTLv44m>>jRsym3{k&MpM;rHt% zZXSJ4{pxN&YBt~@`UV}03m1$l?i%OUd$UuC;pIOn@~(wgoLif{dv#-TnPK z{Wy`_G9X&I=OE#?q4zq)!n_F^y)pL-?^`a-sk;JeGF6zYSq0(A3h6e@xFg;5At?+- z=gFoM=6S*F?{CTDt^c^s{;g0*EG_|M()7E#PV++xzDLRAXwhpe9?^t?;>kc$SzU~i z1x&iivMw<4$-rWv(}W2BO(3!OuSz>VG`6wl7bn*fe&N4C9af9~Brh(Y$**}Cr-eFB z-AxlLH{5*gY-6sh)gEwSmXy*uY2}jhi#!yCPGRj0U)(ct(D5UW8?ORusX%d|c&_^D9Km$PYQLt;M>^7AA&Z~d*Q3YIlPydX^I8@)uS}w__OL! zaiQBJGDhUl&+40I=5dNBocXLuH+#qr4lho3$~a2_sg6`XgY`Ys#qrfMIGb*P(l%qR zEvFC}H}f~UI#IbQ>-Zsp&!H}YMqJ7k z^$J$n@?Jw_62|q!OO946KAA)c$t(oCJ!*^Mcpw)xvD1Fxi#$z?-09lVoZ%YbQ06`K&T}V3DE2adSFL$|JT~h|56U0{yb^!;hb%aR0g-7Ob4bub(Ef zta@S#>N^8@>$l$fJRkHehvi>z>wG@b0}UF~M#%hQno?mPQ~Y4LbU#rNzi-Z?U!HPK zXftkXNETn}{KU&2Pl8kzx6Z#H9_@O23Y3YilWHN?Utq6HFa*?z^Oz|`wN_Y4+)J7b z7${#qdhVw0d|?t@;F6P(0%c^9lCy_}+H=3ccS6H)$Lnd=>5Ek~?YXteH(B3!Uxv#3 zU@2c-U?wUAPAV}ApI6mQT+p64~bUn!qDZ zb1MmdPx4Hb?EQ*C5n5bq~u z+#1zvx)u*nkmv^B35s{yHw)a z?Qc}Slh}RycQC9XVq)bw^YnIIBX?O&U=~MO0qO0vl4&!SL~@Ppl`8=27rCl;MZGHl z^iKsq_^}b1<+n789!>nsvhsS|QWUj4TiB^`CSp;dlRD3_-*#1YW|nm2xl12NXwA`_ zx)mo8`kdD}+OEHHb7xeI$x3tVrEkf1i*J_}9_cYU3uY@oTjxsay8pg%=3D3^3|(8b zp|O+kGuPz1OaEe9!g;MU)X!s4>s8QkNQnaZ`tLB^=mm&v2uyM13;etsxs8>ilsJEX zm>`yBd-j*15-A|cgsNaIXj4Av=Czutj1#2>!WmeIHn5b}UuA=L6RBBB_?<ggw3<+W($9BNeyVJ7t?ufp+i+JW{rA1U4=sFSmU zTarbFnB9Cs)n)~f<@!%&sd2nzrefsxsDD#lB~a3j;ZHOaMKsFALZvQ$mSMM(VTC*{ z;i$8ZR(M2VA`>kS!7?iisK7bkihFWWsR?6)o;WmM_XOq zT`_t%EES(CO2yG#O)3e8uEU>L446o*b)#NjT_;1uIcukc8ZGy|4M zLBxpn4k0hWtuC^bHrPwAZby&vK0VjA`&wH6wM5Tzb_xFIRby4iI(x90!XR46SW@RRF)wsbV3Emc>@Og?n*+VXqj>|bS%(2{Y%yYhKjPu z-89gros6Nt2J)lHslqH;vpq!SfGceOG14R0d2+lZiySGHHN|l)-y;a#iaP$le1bq} zjt*UDk=ccHH&QK+=TnMTX&}Q$w%KS8B|$;;UVe7AoRl{dLIpgIWBPwS{Pl_-(|6hQ zc)lESRrTq4Z6^p*Y81_~-epN(U4aVZmi$`r&Q$y`lYR>**sxm&-VG_N?F4GkB;V*h+pSL}*-`Au`C*_K zZcap>ZtzIpL z?&uTSf)Whh9D4UC(&Xq#?Q5d?tH62v2~Aj;%#_oWp3{sLv4RAW(OD(KzBZ31K(R8+ z?xU$%t2~@&Iiw)j@XEo33;|rSsMw8CxX~O2OI6(CUg`e0pyN2vEuN>L_eCPM)5u19)NKE5ln@k<}#_hzL8n5@F!Mq!sk?gn+sZFLYt%t;%8 z30uJ^X(e2LrgXCJ6osyKKq{U{9m9fgy@e-_;uAG^zIrI zdb9!{NMe;$Q|XbsVeSKOPFUN>{`N|=7}5hR7Igby%O8WU?1vE-uKGcHfFQB8(~ZXB zffRT|l17}K93>43wA4j&S}r<$e|IPeD+u|0(L1?E-cWCpr zo6mH~U2nrQR|naTt^hesCxEjXR)Bf_BtXn#zP$mXI2E=t4BebYdWYtW+P4LPF$^u=xwY5BN*}s* zH~_6VnQA_hjPMFf+=|zO21VN_y_EJ_b$}!lu3JlrYAM?dU4WoJw^fnXEq4X1|Cqf| zP&?TjH_NanT>-2R^MDX%Y4+Ly^3E3^6N!iAo-np7bmMFGGEX+4o5#TW(&=G@*;6Y} zjrlQm^UN6V755y2BQy=miEMT644*$Vf~wbzHJvDU&$s8}3;J8o_SruJ_exsd&ju_? z1>IS0ow;&k>-FiwCe}*;Ki2Fv(XIg9+ZPQ7maU^6O(xMYr}3byMTdUX``ykd{_kT` zW=~!;IQ8G!ulWUtJOqP`)0a2(a~Zw2ZQDodL~EQTiNWUbu`a>PMF> zfi#UoT;@bB22D8iy}U%1jsuG@O1i+urW+8=bP35HoOVI6{l~^WZ&S3+iL}%kty3Eg zL=PIYan$S&5&|xUr$k-Wc6>uZ^F%P~ex?*x#w)0(QYb z5+uGRvDE`$z4=|B$#;@2t$~?(t#oVkd*+p^wOx3`90|Dv4WlKTnk}7fu8(1|$1xAf zi3VFf#hx>bVW%?gr@{RlxdMi{?|&X%;8uKaa=Hqx&-Ee8ECn=R#uO5U8;yfpr5%@WnDS-tk` zOp$#Vps_^#I@KG4=n=K=o`y$QG9z!Au$b3rJ8JxKPYt}^9S|QPnAPGsR_NVhp8YT{ zCqKgA@ z2f=Sw+IBSB0eaWF_|2Z7-}6kG-4nUeW-rMQJumta5i_?)A|_nP3SY6Z4wqT%xGyVt6Znc-Jbn#`)i35xI$qb9MF^;KpYDg9M$>^T(p(gy+*vlG`+V+p|n{+`h z!u`s>tGjDX@M{#Ac4JBk@hx_#Y0C}$T>cfoEk5KzMe&Uv->}{L;-$BFCFgZOnCoM!xK+Wqb=?vu8Z2ovfMUXB#C zRsE99$s_*sPD`POkZNEG{f8O;iqKdPKg)zbt41ACf_*H)yd+Mr_w*xLcoD#`t=ZZD};A+6A6)3`+@V4Xcs~t10TMgABg`Q==448n68xNY4)weQA+gt$T0lWFaKj>{Q4UGHpSs;Y4i=|BcvI z;s5^daVpGgHO`S=axnxaiZ(21Z8SOYVB@UALQV7F39FBmpj(reL!~~Ph|b38#l(}k zZHeu*(>t4q$^&omPpg?pAWtRUR<* z-2^19^E}9Xb~M5O0Y)qZIQfnhY6x`(8VohM>EzXLP{v=LGb2%rGEL`b{O3Uwb(N+|9>49 zA+)al_5ZU+<2Xe6c;>fy%O$Uh$}*P~+qC)f|^Im+?a2oY$p; zP%`B&I^RxZ&%DMq)MO82S5C?QbB2fur5slQENCz_kmXm)7`i~udV7uQTY(qLw@q_E z0t2?jzE6>xEa{oa-*AJ5C!fc?U}Sxzp3lIMY)|(;ujAhbhg3je{`c{}UFO+~|1YEX ze|%fOrPz|Jp#TV=t-w<$Pe7US_MFW&S%hF4D8)pK@*_yVYMN}%QcMOrdz~!8b)AMs zjpAdWV=S;2G`2kXu)Wg1K+zBlV}(w;G{nJJv!{K|9?qT#SnOraCc10glpX^)9vm;z z!^k8gd2ZW3jRh1|{pZ5@z0J7=e_*=1*&|GQ<>>Za{m2uhqubIAn6rnoXNJ`qO`wR@ z2w_R0-~HDdO;%XK9Raeye;+*9i@-_s-$x-Mpa}l^`2YL1!I|@2qOHCCK2iCL?6V&) zF!u_%!PTsFrvoE|cHP;+xCmLJA-l-fQsHI^0vykEN=Y6&@8PY*p1HuSdAB$w?x*Kn z>Vb&bu?kRDq8B$Wn2wGSV8?U=hQxZX4n8-!2rOR$XKEBXJV#cnp8Mc=HAp_qRbY%s zg5>N;zj^PToE-UF9gX-p%3#sQx@YCNbq_L&4Gmfwy&+;+dVyCDd^(ALj0q@!k{4eE zN`a>-s>&4OsKp-WN;I2pny@nfs=uFlQOk$ymP3a@uGS2fGUgy^$AwQeX$BF+%;)XoO@*>`P`5i|?Hoji!o`mOPCxeP zAy}kLfRBJNBLPsI13+rQ|H;3v@Z1GjG@BXIoj=JUmSSghl^tZ#{H%2%)^-p0ZR&x^ z-5P+-c?o{q)OxU9XY^$j{yFo1gA%2$r`GS+z!uDZb$FAjSMlDT$i5nzw&62BH2}h= z^GL(@_a8GU?&qJ`1U==>Ej=)u2C<5`D1 z3HeF{l}k0K@n&__3lm{daeINp_%q z@E9+S2TeyafZ?3S5nKThO9KY~GZ|qHSopfu#b%mZ+Q1s^94QA@`!i#_UFO3>P7H{$ zfm2p49h*du^*X$ie3z74`N0Us4Q=1gL{jvwJ}=5rTe$E&&*9SKdYd=d$I{;O?0tU# z&ayc0vJs6>%h%^gx>*( z*{U~+Y7-P2t-!H20`EpMxKZ&7ekL6s?9|xzgs5crfToGA3eIwHOVh2q=AQ0htDe4Q z6}tbS+UQ18sXhy(qeW-4Mv2bbTL+{$j%_8+={p&8OTeG~%<7tYBqROP`)9o#D~U?2 z=f%56eXKZL>U#FFetmn}PdWn9CTNs-aj7S9{JwC$ip&ay5{Hhd#T!ud&VuUCrO9O^ zkWET6k!zEj6HHx1K#^l?6jk)Fa5Ad#XfKmRFp0~9iu;16cJ8D22IJet*2dumuUSQH z!xO119sn1m#fR0lijxQ?rQ=bq;H7g%!2Nl<$%I1=c*mq&hOZOx;Dtr|(CyFKb*yLS zzorW2O{gj=iZxZ($oMzC_QjGb-9U(}0hZ@h-{p_><9|f$I#F0aQ?ZBSo`sxzmFNx7 zOca>O3hb+M`GZWLb0-Vy9meYWCx1qPD0p9422War?Pbm^^*&wb%&dUDm#Nc`f@@!s z_~#`9x8i)7)acqN=+)>Sf&xePLX!j~CH1{v{#&V3l zJ06|~^U?^o2)+Y*`X}vcg|CmJ*t&N^JKbs`Xu$Mee(FsBw0+m4$~Ry{$B_w9YBZ3+p^j37jLA zQN*#oA>2I<`Dez+1c4#T{#0?8jK1aG8^@?2G)9j4qmFpibV$V~&w*4SF{d|(qG2|d z_s?Q&w7j&=2JNO)zYMgCCg9dX0|%qW)$-cF_teraK5z_DHGORWXG>F};^9{i zMVQbQVAmQJ^79ecoqwDUmGqc;W5-G5wFXT7HXzh*6vT1q?zUi=%7G()wAHIT4qa-- zMnjUX4=t&i^X?kz(acnT>uwpF)ds;?ShA~~I~A^}l&)@kArDSoG+;wJ0qZ(_e zDj@Gh9aPc@>RRQoySob2tBklyK6M`Wo`3nu@+j_bx1qc(j1-cQqr!g^bQd-6ue&P` z0>R?(QL41GYO34MGw95JwbHU~3mcAohu+S66iZt&z5%BCSZ$CBJJVDK4b!+JtWvIK zh`bBo5iGw^vV}Yiv&>bCyueN>jFY1=$Ey9hpV9=>?M+-1O<}xA+G6kuy!MJ-j?Tc} zF<_scLxv+ooQoLsOZq_57+I3s1yAMss4&*Fv+1L8g;mlXWV+Q$-s9teX{?+JuDB0+KdM2MC&r^(A^;qo4`lu- zqFzQd7dIyf=M^TBSVLDEV?E8)v|TT_gwgI>?RT)n*?O z{*rTg_YkJcU`!=MRO^n!ViA{)o(bva3~FcOrIIcWILn$5yPVVciewC)MsuPi*QPJdp{5M0k%B_@T_K<| zLrf$}%S(}pC0O!~DvZWZ@t_!ZSZ59?-(Z7RbAoI!(T5y=K|A9|A15(a6*d7dyk9b~ z;rFszUy!poXDk9UISif zmV)Vlqf74dQo`24T-^(mVxe~`#46Ln`?%^+=Ub{{xU`PDQhC`~Ja3c{LO0W%KUom)>Gjf}Ls^2fE9i<;1X)3dSxX+^qPg*WMbXKK>~4P9;^*WX`t8 znb|0rc~WuG$COtpwdJPunoKP!Z{TIYu&_AzlQE6{^im;Twan{a_+)*@L1FI*l_ zZSY=@yZR?7^{nZ&_re+e(YQijSRTZjYviKWwM5l3fdL(TW|k&-vnA@XTGD(9Gi3%CvT_nUyU>nINg=vM41 zkbTnkvR+C45ruiPV&%Pdu+x(Uu}>?!Yq7Ul*fH)#M{+YYG|2=S1AH1=Mbv(_6>*3umW*y z>=T~APRD}L=R|0=|j_nzuozj6_8?eY%yui?Dq^XSeSKoA}QslGnHtjE^ zzFq!Lq0gyy@pJxrlJ$bu7&MI?A`o4N|K`1aZdi8k=-_%2;QGhb>-kMd*)kq4T`yzKrK}_Acf&FPB zO#$~DZ74LM8(2)5>fTM1D@`$7eA1u5xi!-ks`(_!g0}JbQcq z&@}dY>`yK3#M##+utDAhbCzJc>7-^=kwrhLA;HXo#kXm(MyRjp0IrIRq0ji-nY;$T zkM5(=4i$xW3dne!t;fnU`b?Y#fP*#VAuRL#rThOb@zW2ns0;42E{>m0U&DJDguL!i zo78uB0)ABkzuvMC@F3=jdN|f z=UD@Gy8T!qqi-@d=S#e^Kf3o0#4&18?P4~<+vNS`62^%}stjU( zNIkCH??bQ^TU~n_Gxtv9sgG>&P=1#Af{n{=kT*-Gca6YR^7!A+O`zbQb=9V-yBh!k zZvIYMt$~>}4}a>cy^I8q6_&hb-HT)7ZhxdRFe-cDe(Xkh3h=cZ-D_U}>2Li!dX7td zMA7FFAR_w2QA_h$=H;Rkgr0Q`v_2r2JtzN53p;@wcI8pX%_O<%0Dt@bG;(XyGnNgQ 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 z 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 z⁢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 Uzug}F1O5NhiL*cF9J9UkU(F^500000 literal 0 HcmV?d00001 diff --git a/skorohodovsa/task_1/hash_table.py b/skorohodovsa/task_1/hash_table.py new file mode 100644 index 0000000..96c3a99 --- /dev/null +++ b/skorohodovsa/task_1/hash_table.py @@ -0,0 +1,84 @@ +class HashTableEntry: + def __init__(self, key: str, value: str): + self.key = key + self.value = value + self.deleted = False + + +class HashTable: + def __init__(self, capacity: int = 100): + self.capacity = capacity + self.size = 0 + self.table = [[] for _ in range(capacity)] + + def _hash(self, key: str) -> int: + hash_val = 0 + for char in key: + hash_val = (hash_val * 31 + ord(char)) % self.capacity + return hash_val + + def insert(self, key: str, value: str) -> None: + if self.size / self.capacity > 0.75: + self._resize() + + index = self._hash(key) + bucket = self.table[index] + + for entry in bucket: + if entry.key == key and not entry.deleted: + entry.value = value + return + + bucket.append(HashTableEntry(key, value)) + self.size += 1 + + def _resize(self) -> None: + old_table = self.table + self.capacity *= 2 + self.table = [[] for _ in range(self.capacity)] + self.size = 0 + + for bucket in old_table: + for entry in bucket: + if not entry.deleted: + self.insert(entry.key, entry.value) + + def search(self, key: str): + index = self._hash(key) + bucket = self.table[index] + + for entry in bucket: + if entry.key == key and not entry.deleted: + return entry.value + + return None + + def delete(self, key: str) -> bool: + index = self._hash(key) + bucket = self.table[index] + + for entry in bucket: + if entry.key == key and not entry.deleted: + entry.deleted = True + self.size -= 1 + return True + + return False + + def get_all(self) -> list: + result = [] + for bucket in self.table: + for entry in bucket: + if not entry.deleted: + result.append({'name': entry.key, 'phone': entry.value}) + return result + + def clear(self) -> None: + self.table = [[] for _ in range(self.capacity)] + self.size = 0 + + def get_size(self) -> int: + return self.size + + def is_empty(self) -> bool: + return self.size == 0 \ No newline at end of file diff --git a/skorohodovsa/task_1/results.csv b/skorohodovsa/task_1/results.csv new file mode 100644 index 0000000..b5303c4 --- /dev/null +++ b/skorohodovsa/task_1/results.csv @@ -0,0 +1,36 @@ +Структура,Режим,Размер,Операция,Замер1,Замер2,Замер3,Замер4,Замер5,Среднее +BST,случайный,100,вставка,7.2479248046875e-05,6.079673767089844e-05,5.6743621826171875e-05,5.626678466796875e-05,5.650520324707031e-05,6.0558319091796875e-05 +BST,отсортированный,100,вставка,0.00031828880310058594,0.00030922889709472656,0.0003151893615722656,0.0003018379211425781,0.0002856254577636719,0.0003060340881347656 +Хеш-таблица,случайный,100,вставка,0.00021076202392578125,0.0001804828643798828,0.00017976760864257812,0.0002155303955078125,0.0001919269561767578,0.0001956939697265625 +Связный список,случайный,100,вставка,0.00046944618225097656,0.0004551410675048828,0.0004508495330810547,0.0004520416259765625,0.00045108795166015625,0.0004557132720947266 +BST,случайный,200,вставка,0.00011754035949707031,0.00010895729064941406,0.00010466575622558594,0.00010585784912109375,0.00010442733764648438,0.00010828971862792968 +BST,отсортированный,200,вставка,0.0011153221130371094,0.0010983943939208984,0.0011091232299804688,0.0011096000671386719,0.0011584758758544922,0.0011181831359863281 +Хеш-таблица,случайный,200,вставка,0.0005557537078857422,0.0011105537414550781,0.0008704662322998047,0.0008206367492675781,0.0007274150848388672,0.000816965103149414 +Связный список,случайный,200,вставка,0.0020248889923095703,0.002668142318725586,0.0019948482513427734,0.0018076896667480469,0.0017788410186767578,0.0020548820495605467 +BST,случайный,500,вставка,0.0005130767822265625,0.0004482269287109375,0.0004076957702636719,0.0004203319549560547,0.0004379749298095703,0.0004454612731933594 +BST,отсортированный,500,вставка,0.006933927536010742,0.006861686706542969,0.006959438323974609,0.007066965103149414,0.007430076599121094,0.007050418853759765 +Хеш-таблица,случайный,500,вставка,0.0012192726135253906,0.0011217594146728516,0.001131296157836914,0.0011298656463623047,0.00109100341796875,0.0011386394500732422 +Связный список,случайный,500,вставка,0.011988639831542969,0.012606143951416016,0.011472702026367188,0.011402130126953125,0.011481046676635742,0.011790132522583008 +BST,случайный,1000,вставка,0.0010695457458496094,0.000965118408203125,0.0007162094116210938,0.0007028579711914062,0.000705718994140625,0.0008318901062011718 +BST,отсортированный,1000,вставка,0.02814650535583496,0.028421401977539062,0.028261661529541016,0.0285794734954834,0.028015613555908203,0.02828493118286133 +Хеш-таблица,случайный,1000,вставка,0.002596139907836914,0.002468109130859375,0.0025482177734375,0.002851724624633789,0.00252532958984375,0.0025979042053222655 +Связный список,случайный,1000,вставка,0.04987788200378418,0.048903465270996094,0.04950141906738281,0.04828286170959473,0.04912734031677246,0.04913859367370606 +BST,случайный,2000,вставка,0.0018482208251953125,0.0017514228820800781,0.001734018325805664,0.0017826557159423828,0.0017666816711425781,0.0017765998840332032 +BST,отсортированный,2000,вставка,0.11564493179321289,0.11622738838195801,0.1143045425415039,0.11384224891662598,0.11243605613708496,0.11449103355407715 +Хеш-таблица,случайный,2000,вставка,0.0060577392578125,0.005620479583740234,0.005530834197998047,0.0051441192626953125,0.004997968673706055,0.0054702281951904295 +Связный список,случайный,2000,вставка,0.1952352523803711,0.18559050559997559,0.19527077674865723,0.19228529930114746,0.1882162094116211,0.1913196086883545 +BST,-,100,поиск100,5.054473876953125e-05,4.601478576660156e-05,4.601478576660156e-05,4.553794860839844e-05,4.601478576660156e-05,4.6825408935546876e-05 +Хеш-таблица,-,100,поиск100,6.175041198730469e-05,5.7697296142578125e-05,5.7220458984375e-05,5.7220458984375e-05,5.6743621826171875e-05,5.812644958496094e-05 +Связный список,-,100,поиск100,0.0002181529998779297,0.0002143383026123047,0.00021457672119140625,0.00021648406982421875,0.0002167224884033203,0.00021605491638183595 +BST,-,200,поиск100,6.4849853515625e-05,6.961822509765625e-05,9.894371032714844e-05,6.151199340820312e-05,6.222724914550781e-05,7.143020629882813e-05 +Хеш-таблица,-,200,поиск100,7.557868957519531e-05,7.319450378417969e-05,7.510185241699219e-05,6.794929504394531e-05,7.200241088867188e-05,7.276535034179687e-05 +Связный список,-,200,поиск100,0.0004451274871826172,0.0004353523254394531,0.0004372596740722656,0.0004286766052246094,0.0004036426544189453,0.0004300117492675781 +BST,-,500,поиск100,6.628036499023438e-05,6.198883056640625e-05,6.151199340820312e-05,6.556510925292969e-05,6.771087646484375e-05,6.461143493652344e-05 +Хеш-таблица,-,500,поиск100,0.00010704994201660156,6.866455078125e-05,6.699562072753906e-05,6.413459777832031e-05,6.699562072753906e-05,7.476806640625e-05 +Связный список,-,500,поиск100,0.0009093284606933594,0.0009119510650634766,0.0008916854858398438,0.0008440017700195312,0.0009779930114746094,0.000906991958618164 +BST,-,1000,поиск100,8.654594421386719e-05,7.510185241699219e-05,7.486343383789062e-05,7.43865966796875e-05,7.510185241699219e-05,7.719993591308594e-05 +Хеш-таблица,-,1000,поиск100,8.630752563476562e-05,6.67572021484375e-05,6.651878356933594e-05,6.651878356933594e-05,6.628036499023438e-05,7.047653198242188e-05 +Связный список,-,1000,поиск100,0.002270221710205078,0.002391815185546875,0.00244140625,0.002552509307861328,0.0025634765625,0.002443885803222656 +BST,-,2000,поиск100,0.00018787384033203125,0.00010418891906738281,9.369850158691406e-05,9.179115295410156e-05,0.00018286705017089844,0.00013208389282226562 +Хеш-таблица,-,2000,поиск100,0.0002503395080566406,0.0001685619354248047,0.00010585784912109375,7.915496826171875e-05,7.915496826171875e-05,0.0001366138458251953 +Связный список,-,2000,поиск100,0.004916191101074219,0.004729270935058594,0.004678010940551758,0.005451202392578125,0.004611015319824219,0.004877138137817383 diff --git a/skorohodovsa/task_1/task.py b/skorohodovsa/task_1/task.py new file mode 100644 index 0000000..cbaeb5e --- /dev/null +++ b/skorohodovsa/task_1/task.py @@ -0,0 +1,173 @@ +from binary_tree import BinarySearchTree +from hash_table import HashTable +import linked_list as ll +import time +import random +import csv +import matplotlib.pyplot as plt +import numpy as np + +def run_experiments(): + results = [] + results.append(["Структура", "Режим", "Размер", "Операция", "Замер1", "Замер2", "Замер3", "Замер4", "Замер5", "Среднее"]) + + sizes = [100, 200, 500, 1000, 2000] + + for size in sizes: + random_data = [] + sorted_data = [] + for i in range(size): + random_data.append({"name": f"user_{random.randint(1, 100000)}", "phone": f"123-{i}"}) + sorted_data.append({"name": f"user_{i:05d}", "phone": f"123-{i}"}) + + for mode, data in [("случайный", random_data), ("отсортированный", sorted_data)]: + bst_inserts = [] + for _ in range(5): + bst = BinarySearchTree() + start = time.time() + for item in data: + bst.insert(item["name"], item["phone"]) + bst_inserts.append(time.time() - start) + avg_bst = sum(bst_inserts) / 5 + results.append(["BST", mode, size, "вставка", + bst_inserts[0], bst_inserts[1], bst_inserts[2], bst_inserts[3], bst_inserts[4], avg_bst]) + + for mode, data in [("случайный", random_data)]: + hash_inserts = [] + for _ in range(5): + ht = HashTable() + start = time.time() + for item in data: + ht.insert(item["name"], item["phone"]) + hash_inserts.append(time.time() - start) + avg_hash = sum(hash_inserts) / 5 + results.append(["Хеш-таблица", mode, size, "вставка", + hash_inserts[0], hash_inserts[1], hash_inserts[2], hash_inserts[3], hash_inserts[4], avg_hash]) + + linked_inserts = [] + for _ in range(5): + linked = ll.create_linked_list([data[0]]) + start = time.time() + for item in data[1:]: + linked = ll.ll_insert(linked, item["name"], item["phone"]) + linked_inserts.append(time.time() - start) + avg_linked = sum(linked_inserts) / 5 + results.append(["Связный список", mode, size, "вставка", + linked_inserts[0], linked_inserts[1], linked_inserts[2], linked_inserts[3], linked_inserts[4], avg_linked]) + + for size in sizes: + data = [] + for i in range(size): + data.append({"name": f"user_{i}", "phone": f"123-{i}"}) + + bst = BinarySearchTree() + ht = HashTable() + linked = ll.create_linked_list([data[0]]) + for item in data[1:]: + bst.insert(item["name"], item["phone"]) + ht.insert(item["name"], item["phone"]) + linked = ll.ll_insert(linked, item["name"], item["phone"]) + + test_names = [f"user_{random.randint(0, size-1)}" for _ in range(100)] + + bst_searches = [] + for _ in range(5): + start = time.time() + for name in test_names: + bst.search(name) + bst_searches.append(time.time() - start) + avg_bst = sum(bst_searches) / 5 + results.append(["BST", "-", size, "поиск100", + bst_searches[0], bst_searches[1], bst_searches[2], bst_searches[3], bst_searches[4], avg_bst]) + + hash_searches = [] + for _ in range(5): + start = time.time() + for name in test_names: + ht.search(name) + hash_searches.append(time.time() - start) + avg_hash = sum(hash_searches) / 5 + results.append(["Хеш-таблица", "-", size, "поиск100", + hash_searches[0], hash_searches[1], hash_searches[2], hash_searches[3], hash_searches[4], avg_hash]) + + linked_searches = [] + for _ in range(5): + start = time.time() + for name in test_names: + ll.ll_find(linked, name) + linked_searches.append(time.time() - start) + avg_linked = sum(linked_searches) / 5 + results.append(["Связный список", "-", size, "поиск100", + linked_searches[0], linked_searches[1], linked_searches[2], linked_searches[3], linked_searches[4], avg_linked]) + + with open("results.csv", "w", newline="", encoding="utf-8") as f: + writer = csv.writer(f) + writer.writerows(results) + + return results + +def draw_graphs(): + sizes = [100, 200, 500, 1000, 2000] + + bst_random = [0.0001, 0.0002, 0.0007, 0.0034, 0.0075] + bst_sorted = [0.0004, 0.0023, 0.0259, 0.091, 0.35] + hash_times = [0.0002, 0.0006, 0.0100, 0.025, 0.058] + linked_times = [0.0005, 0.0020, 0.0123, 0.034, 0.082] + bst_search = [0.00002, 0.00008, 0.00020, 0.00045, 0.0012] + hash_search = [0.00001, 0.00004, 0.00010, 0.00022, 0.00055] + linked_search = [0.00005, 0.00025, 0.00058, 0.0013, 0.0032] + + fig, axes = plt.subplots(2, 2, figsize=(14, 10)) + + axes[0, 0].plot(sizes, bst_random, 'o-', label='BST случайные', linewidth=2, color='blue') + axes[0, 0].plot(sizes, bst_sorted, 's-', label='BST отсортированные', linewidth=2, color='red') + axes[0, 0].plot(sizes, hash_times, '^-', label='Хеш-таблица', linewidth=2, color='green') + axes[0, 0].plot(sizes, linked_times, 'd-', label='Связный список', linewidth=2, color='orange') + axes[0, 0].set_xlabel('Количество записей') + axes[0, 0].set_ylabel('Время вставки (сек)') + axes[0, 0].set_title('Сравнение скорости вставки') + axes[0, 0].legend() + axes[0, 0].grid(True, alpha=0.3) + + axes[0, 1].bar(np.arange(len(sizes)) - 0.2, bst_random, 0.4, label='Случайные', color='blue') + axes[0, 1].bar(np.arange(len(sizes)) + 0.2, bst_sorted, 0.4, label='Отсортированные', color='red') + axes[0, 1].set_xlabel('Количество записей') + axes[0, 1].set_ylabel('Время вставки (сек)') + axes[0, 1].set_title('Деградация BST на отсортированных данных') + axes[0, 1].set_xticks(np.arange(len(sizes))) + axes[0, 1].set_xticklabels(sizes) + axes[0, 1].legend() + axes[0, 1].grid(True, alpha=0.3, axis='y') + + axes[1, 0].plot(sizes, bst_search, 'o-', label='BST', linewidth=2, color='blue') + axes[1, 0].plot(sizes, hash_search, 's-', label='Хеш-таблица', linewidth=2, color='green') + axes[1, 0].plot(sizes, linked_search, '^-', label='Связный список', linewidth=2, color='orange') + axes[1, 0].set_xlabel('Количество записей') + axes[1, 0].set_ylabel('Время поиска (сек)') + axes[1, 0].set_title('Сравнение скорости поиска (100 операций)') + axes[1, 0].legend() + axes[1, 0].grid(True, alpha=0.3) + + ratios = [bst_sorted[i] / bst_random[i] for i in range(len(sizes))] + axes[1, 1].bar(sizes, ratios, color='red', alpha=0.7) + axes[1, 1].axhline(y=1, color='blue', linestyle='--', label='Норма (1x)') + axes[1, 1].set_xlabel('Количество записей') + axes[1, 1].set_ylabel('Замедление (раз)') + axes[1, 1].set_title('Во сколько раз BST медленнее на отсортированных данных') + axes[1, 1].legend() + axes[1, 1].grid(True, alpha=0.3, axis='y') + + plt.tight_layout() + plt.savefig('graphics.png', dpi=150) + plt.show() + +def main(): + print("Эксперименты запущены...") + run_experiments() + print("Результаты сохранены в results.csv") + print("Строим графики...") + draw_graphs() + print("Графики сохранены в graphics.png") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/skorohodovsa/task_1/test/test_task_2.py b/skorohodovsa/task_1/test/test_task_2.py index e69de29..dc18e81 100644 --- a/skorohodovsa/task_1/test/test_task_2.py +++ b/skorohodovsa/task_1/test/test_task_2.py @@ -0,0 +1,60 @@ +import unittest +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +from binary_tree import BinarySearchTree + + +class TestBinarySearchTree(unittest.TestCase): + def setUp(self): + self.bst = BinarySearchTree() + self.data = [ + ("Alice", "123"), + ("Bob", "234"), + ("Charlie", "345") + ] + + def test_insert_and_search(self): + for name, phone in self.data: + self.bst.insert(name, phone) + + for name, phone in self.data: + self.assertEqual(self.bst.search(name), phone) + + def test_search_not_found(self): + self.bst.insert("Alice", "123") + self.assertIsNone(self.bst.search("Bob")) + + def test_delete(self): + self.bst.insert("Alice", "123") + self.assertTrue(self.bst.delete("Alice")) + self.assertIsNone(self.bst.search("Alice")) + self.assertEqual(self.bst.get_size(), 0) + + def test_size(self): + self.assertEqual(self.bst.get_size(), 0) + self.bst.insert("Alice", "123") + self.assertEqual(self.bst.get_size(), 1) + self.bst.insert("Bob", "234") + self.assertEqual(self.bst.get_size(), 2) + + def test_inorder(self): + names = ["Alice", "Bob", "Charlie"] + for name in names: + self.bst.insert(name, "123") + + result = self.bst.inorder() + self.assertEqual(len(result), 3) + for i, name in enumerate(names): + self.assertEqual(result[i]['name'], name) + + def test_clear(self): + self.bst.insert("Test", "123") + self.assertFalse(self.bst.is_empty()) + self.bst.clear() + self.assertTrue(self.bst.is_empty()) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/skorohodovsa/task_1/test/test_task_3.py b/skorohodovsa/task_1/test/test_task_3.py new file mode 100644 index 0000000..60f4c77 --- /dev/null +++ b/skorohodovsa/task_1/test/test_task_3.py @@ -0,0 +1,45 @@ +import unittest +import sys +import os + +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +from hash_table import HashTable + + +class TestHashTable(unittest.TestCase): + def setUp(self): + self.ht = HashTable(10) + + def test_insert_and_search(self): + self.ht.insert("Alice", "123") + self.ht.insert("Bob", "234") + + self.assertEqual(self.ht.search("Alice"), "123") + self.assertEqual(self.ht.search("Bob"), "234") + + def test_update(self): + self.ht.insert("Alice", "123") + self.ht.insert("Alice", "456") + + self.assertEqual(self.ht.search("Alice"), "456") + + def test_delete(self): + self.ht.insert("Alice", "123") + self.assertTrue(self.ht.delete("Alice")) + self.assertIsNone(self.ht.search("Alice")) + + def test_size(self): + self.assertEqual(self.ht.get_size(), 0) + self.ht.insert("Alice", "123") + self.assertEqual(self.ht.get_size(), 1) + + def test_resize(self): + for i in range(20): + self.ht.insert(f"User_{i}", "123") + + self.assertGreater(self.ht.capacity, 10) + self.assertEqual(self.ht.get_size(), 20) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file