πΠ‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Python
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΡΠΎΡΡΠΎ, Π½ΠΎ ΠΊΠ°ΠΊ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π»ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ? ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ·ΡΠΊΠ° Python ΠΈ Π΅Π³ΠΎ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ Π½Π°ΡΡΠΈΠΌΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ , ΡΡΠΎΠ±Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π»ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π’Π°ΠΊΠΎΠΉ ΡΠΈΠΏ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, β Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΠ²Π΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌΡ, ΠΈΠ»ΠΈ ΡΠΌΠΏΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ, Π°Π½Π°Π»ΠΈΠ·Ρ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ»Π°ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π² Python
Π‘Π°ΠΌΠΎΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° β O(1). ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΈΡΠ΅Π».
ΠΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΏΠΈΡΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ O(N) ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ. ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΏΠΈΡΠΊΠ° ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ Π² Π΄Π²Π° ΡΠ°Π·Π°, ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² Π΄Π²Π° ΡΠ°Π·Π° Π΄ΠΎΠ»ΡΡΠ΅.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ N
, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π²ΡΡΡΠ΅ΡΠΈΡΠ΅ Π΄Π°Π»Π΅Π΅, β ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
β len(data_structure)
.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Π² Python.
Π‘ΠΏΠΈΡΠΊΠΈ (lists)
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ | ΠΡΠΈΠΌΠ΅Ρ | Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ |
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° | l[i] |
O(1) | |
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° | l[i] = 0 |
O(1) | |
Π Π°Π·ΠΌΠ΅Ρ ΡΠΏΠΈΡΠΊΠ° | len(l) |
O(1) | |
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ° | l.append(5) |
O(1) | |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (pop) | l.pop() |
O(1) | Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ l.pop(-1) |
ΠΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° | l.clear() |
O(1) | Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ l = [] |
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π·Π° | l[a:b] |
O(b-a) | l[1:5] => O(1), l[:] => O(len(l) β 0) = O(N) |
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ | l.extend(...) |
O(len(...)) | ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ |
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ | list(...) |
O(len(...)) | ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ (...) |
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠ² (== , != ) |
l1 == l2 |
O(N) | |
ΠΡΡΠ°Π²ΠΊΠ° | l[a:b] = ... |
O(N) | |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (del) | del l[i] |
O(N) | ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ i . O(N) β Π² Ρ
ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ |
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ | x in/not in l |
O(N) | ΠΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ Π² ΡΠΏΠΈΡΠΊΠ΅ |
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ | l.copy() |
O(N) | Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ l[:] |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (remove) | l.remove(...) |
O(N) | |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (pop) | l.pop(i) |
O(N) | O(N-i). ΠΠ»Ρ l.pop(0) => O(N) |
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ/ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ | min(l)/max(l) |
O(N) | ΠΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ Π² ΡΠΏΠΈΡΠΊΠ΅ |
Π Π°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° | l.reverse() |
O(N) | |
ΠΠ΅ΡΠ΅Π±ΠΎΡ | for v in l: |
O(N) | Π Ρ
ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π±Π΅Π· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»Π° (return /break ) |
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° | l.sort() |
O(N Log N) | |
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ | k*l |
O(k N) | 5*l => O(N), len(l)*l => O(N2) |
ΠΠΎΡΡΠ΅ΠΆΠΈ (tuples) ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ β ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ Ρ ΡΠΏΠΈΡΠΊΠΎΠ².
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° (sets)
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ | ΠΡΠΈΠΌΠ΅Ρ | Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ |
Π Π°Π·ΠΌΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° | len(s) |
O(1) | |
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° | s.add(5) |
O(1) | |
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ | x in/not in s |
O(1) | ΠΠ»Ρ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ => O(N) |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (remove) | s.remove(..) |
O(1) | ΠΠ»Ρ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ => O(N) |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (discard) | s.discard(..) |
O(1) | |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (pop) | s.pop() |
O(1) | Π£Π΄Π°Π»ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ "ΡΠ°Π½Π΄ΠΎΠΌΠ½ΠΎ" |
ΠΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° | s.clear() |
O(1) | Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ s = set() |
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ | set(...) |
O(len(...)) | ΠΠ°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ (...) |
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² (== , != ) |
s != t |
O(len(s)) | Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ len(t) |
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² (<= /< ) |
s <= t |
O(len(s)) | issubset |
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² (>= /> ) |
s >= t |
O(len(t)) | issuperset s <= t == t >= s |
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (union) | s | t |
O(len(s)+len(t)) | |
ΠΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ (intersection) | s & t |
O(len(s)+len(t)) | |
Π Π°Π·Π½ΠΎΡΡΡ (difference) | s β t |
O(len(s)+len(t)) | |
Π‘ΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½Π°Ρ ΡΠ°Π·Π½ΠΎΡΡΡ | s ^ t |
O(len(s)+len(t)) | |
ΠΠ΅ΡΠ΅Π±ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° | for v in s: |
O(N) | Π Ρ
ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π±Π΅Π· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»Π° (return /break ) |
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ | s.copy() |
O(N) |
Π ΡΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°ΠΌΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(1), Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΎ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌΠΈ. ΠΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π° ΡΠ΅ΠΌ, ΡΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°ΠΌ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° (frozen sets) ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ β ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ Ρ ΠΎΠ±ΡΡΠ½ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ².
Π‘Π»ΠΎΠ²Π°ΡΠΈ (dict ΠΈ defaultdict)
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ | ΠΡΠΈΠΌΠ΅Ρ | Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ |
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° | d[k] |
O(1) | |
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° | d[k] = v |
O(1) | |
Π Π°Π·ΠΌΠ΅Ρ ΡΠ»ΠΎΠ²Π°ΡΡ | len(d) |
O(1) | |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (del) | del d[k] |
O(1) | |
get/setdefault | d.get(k) |
O(1) | |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ (pop) | d.pop(k) |
O(1) | |
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ (popitem) | d.popitem() |
O(1) | Π£Π΄Π°Π»ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ "ΡΠ°Π½Π΄ΠΎΠΌΠ½ΠΎ" |
ΠΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ | d.clear() |
O(1) | Π’ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ s = {} ΠΈΠ»ΠΈ s = dict() |
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ | d.keys() |
O(1) | Π’ΠΎ ΠΆΠ΅ Π΄Π»Ρ d.values() |
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΡ | dict(...) |
O(len(...)) | |
ΠΠ΅ΡΠ΅Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² | for k in d: |
O(N) | ΠΠ»Ρ Π²ΡΠ΅Ρ ΡΠΈΠΏΠΎΠ²: keys, values, items. Π Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π±Π΅Π· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»Π° |
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(1).
Π’ΠΈΠΏ defaultdict ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ·ΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ Π² defaultdict, ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(1).
Π’ΠΎΠ½ΠΊΠΎΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ for i in range(...)
ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(len(...))
. ΠΠ»Ρ for i in range(1, 10)
ΠΎΠ½Π° ΡΠ°Π²Π½Π° O(1).
ΠΡΠ»ΠΈ len(alist)
β ΡΡΠΎ N
, ΡΠΎΠ³Π΄Π° for i in range(len(alist))
Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(N), ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΠΊΠ» Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ N
ΡΠ°Π·.
ΠΡΠΈ ΡΡΠΎΠΌ for i in range(len(alist)/2)
ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(N). Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠΊΠ» Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ N/2
ΡΠ°Π·, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ±ΡΠΎΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ 1/2
. ΠΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΏΠΈΡΠΊΠ° Π²Π΄Π²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠ°Ρ ΡΠ°Π±ΠΎΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π²Π°ΠΈΠ²Π°Π΅ΡΡΡ.
Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ for i in range(len(alist)/1000000)
ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(N). ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° N
ΡΡΡΠ΅ΠΌΠΈΡΡΡ ΠΊ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Π΄Π²ΡΡ
ΡΠΏΠΈΡΠΊΠΎΠ² Π½Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ, ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ O(N), ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π²ΡΡΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ Π½Π° O==(...), Π³Π΄Π΅ O==(...) ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ (==
) Π΄Π²ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΠΏΠΈΡΠΊΠ΅. ΠΡΠ»ΠΈ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ (int), ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π° O(1), Π΅ΡΠ»ΠΈ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ (string), ΡΠΎ Π² Ρ
ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ O(len(string)).
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΌΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΡΠ°ΡΡΠ΅ΡΠ°Ρ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(1) β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠΈΡΠ΅Π» ΠΈ ΡΡΡΠΎΠΊ ΠΌΠ°Π»ΠΎΠΉ/ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ.
Π‘ΠΎΡΡΠ°Π²Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ
Π Π°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΊΠΎΠ½ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ O-Π½ΠΎΡΠ°ΡΠΈΠΈ
ΠΡΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄Π²ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ². Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅, O(f(n) + g(n))
ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΠΊ Π±ΠΎΠ»ΡΡΠ΅ΠΌΡ ΠΈΠ· Π΄Π²ΡΡ
ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ² β ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅Π½ΡΡΠΈΠΉ ΡΠ»Π΅Π½ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ,
ΡΠ°ΠΊ ΠΊΠ°ΠΊN
ΡΠ°ΡΡΠ΅Ρ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ log N
:
ΠΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ½Π°ΡΠ°Π»Π° ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ O(f(n)), Π° ΡΠ»Π΅Π΄ΠΎΠΌ Π·Π° Π½ΠΈΠΌ β O(g(n)). Π’ΠΎΠ³Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (ΠΎΠ΄Π½ΠΎ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ) Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(f(n)) + O(g(n)), ΡΠΎ Π΅ΡΡΡ O(f(n) + g(n)).
ΠΡΠΈΠΌΠ΅Ρ
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ f(...)
ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(N), Π° Π²ΡΠ·ΠΎΠ² g(...)
β O (N * log N). ΠΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ:
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π°:
ΠΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ f(...)
Π΄Π²Π°ΠΆΠ΄Ρ:
ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ:
ΠΠΎΠ½ΡΡΠ°Π½ΡΠ° 2
Π² Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ
ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ.
Π£ΡΠ»ΠΎΠ²ΠΈΡ
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠΉ (if). Π‘Π½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² (if ΠΈΠ»ΠΈ else).
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ test
ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(T), Π±Π»ΠΎΠΊΠ° block 1
β O(B1), Π° Π±Π»ΠΎΠΊΠ° block 2
β O(B2).
Π’ΠΎΠ³Π΄Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π°:
test
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π°, Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² ΡΠ»Π΅Π΄ΠΎΠΌ Π·Π° Π½ΠΈΠΌ β ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ. Π Ρ
ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π±Π»ΠΎΠΊ Ρ Π½Π°ΠΈΠ²ΡΡΡΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ.
ΠΠΎΠ΄ΡΡΠ°Π²ΠΈΠΌ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
test
β O(N),block 1
β O(N2),block 2
β O(N).
ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°:
ΠΡΠ»ΠΈ Π±Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ test
ΠΈΠΌΠ΅Π»Π° ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ O(N3), ΡΠΎ ΠΎΠ±ΡΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° ΡΠΎΡΡΠ°Π²ΠΈΠ»Π° Π±Ρ O(N3).
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΎΠ±ΡΠΈΠΉ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ if-ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅:
ΠΠ»Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ:
Π O-Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ Π·Π½Π°ΡΠΈΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ β ΠΏΠΎ ΡΡΡΠΈ ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ max
. ΠΠ°ΠΏΠΈΡΡ Ρ max
Π»ΡΡΡΠ΅ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΡΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π΄Π»Ρ Π²Π°Ρ Π²Π°ΡΠΈΠ°Π½Ρ.
ΠΠ°ΠΊΠΎΠ½ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ O-Π½ΠΎΡΠ°ΡΠΈΠΈ
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ O(N) ΡΠ°Π· Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ O(f(N)), ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½:
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ f(...)
ΠΈΠΌΠ΅Π΅Ρ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ O(N2). ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π΅ Π² ΡΠΈΠΊΠ»Π΅ N
ΡΠ°Π·:
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½Π°:
ΠΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠ΅Π³ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΌΠ½ΠΎΠΆΠΈΡΡ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅
ΠΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΡΠΈ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠ°ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ Π·Π°Π΄Π°ΡΡ β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΡΠΎΡΡΠΎΠΈΡ Π»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ²). ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΈΡΠ»ΠΈΠΌ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ.
ΠΠ»Ρ Π²ΡΠ΅Ρ
ΡΡΠ΅Ρ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΏΠΈΡΠΊΠ° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΠΌ ΠΊΠ°ΠΊ N
, Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅ΠΌ Π·Π° O(1).
ΠΠ»Π³ΠΎΡΠΈΡΠΌ 1
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ΅. ΠΠ»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ alist[i]
ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠ΅Π· alist[i+1:]
.
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°:
- O(N) β Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
range
ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ: Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡ Π²__init__
ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π»Π°__init__
. ΠΠ²Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ O(1). Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡlen(alist)
ΡΠ°ΠΊΠΆΠ΅ O(1), ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡrange(len(alist))
β O(1) + O(1) + O(1) = O(1). - O(N) β ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° + ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ + ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅Π·Π° + ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° in: O(1) + O(1) + O(N) + O(N) = O(N)
- O(1) β Π² Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ.
- O(1) β Π² Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅Π»ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ is_unique1
ΡΠ°Π²Π΅Π½:
ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΏΠΈΡΠΊΠ° ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ Π²Π΄Π²ΠΎΠ΅, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΉΠΌΠ΅Ρ Π² 4 ΡΠ°Π·Π° Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
Π²Π΅Π΄Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ if
cΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ (O(N)) ΠΈ Π±Π»ΠΎΠΊΠ° return False
(O(1)). ΠΠΎ Π² Ρ
ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΡ Π±Π»ΠΎΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΈ ΡΠΈΠΊΠ» ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π΅Π³ΠΎ Π² ΡΠΎΡΠΌΡΠ»Ρ. ΠΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ, ΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ O(N) + O(1) β ΡΡΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ O(N).
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Ρ
ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌΡΠΉ ΡΡΠ΅Π· ΡΠΏΠΈΡΠΊΠ° β ΡΡΠΎ alist[1:]
. ΠΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ β O(N-1) = O(N). ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° i == len(alist)
ΡΡΠΎΡ ΡΡΠ΅Π· Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡ. Π‘ΡΠ΅Π΄Π½ΠΈΠΉ ΡΡΠ΅Π· ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ N/2
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΡΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π΄Π°Π΅ΠΌ Π½Π°ΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(N).
ΠΠΌΠ΅ΡΡΠΎ ΡΡΠ΅Π·ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ». Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ.
ΠΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅Π»ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΡ ΠΆΠ΅:
ΠΠ»Π³ΠΎΡΠΈΡΠΌ 2
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΄ΠΎΠΌ Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ β ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²Π»ΠΈΡΡΡ Π½Π° Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎ ΡΡΡΠΎΡΠΊΠ°ΠΌ:
- O(N).
- O(N log N) β Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
- O(N) β Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ N-1, Π½ΠΎ ΡΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΏΠΈΡΠΊΠ° ΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(1).
- O(1) β ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ β Π²ΡΠ΅ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ O(1).
- O(1) β Π² Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
- O(1) β Π² Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ.
ΠΠ±ΡΠΈΠΉ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ is_unique2
:
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ is_unique1
. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ N
is_unique2
Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅.
ΠΠ°ΠΈΠ±ΠΎΠ»ΡΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ β ΠΎΠ½Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΈ ΡΠ΄Π²ΠΎΠ΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΏΠΈΡΠΊΠ° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΉΠΌΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ²ΡΠ΅Π³ΠΎΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ O(N log N) Ρ ΡΠΆΠ΅, ΡΠ΅ΠΌ O(N), Π½ΠΎ ΡΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ O(N2).
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π² ΠΊΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅ΡΡΠΈ ΠΎΠ΄Π½ΠΎ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅:
Π€ΡΠ½ΠΊΡΠΈΡ sorted
ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠΏΠΈΡ.
ΠΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° Π΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ O(N + N log N) = O(N log N). Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ β ΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½Π΅Π΅ Π½Π°ΠΉΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ.
ΠΡΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ is_unique2
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΡΠ°Π²Π½ΠΈΠΌΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ (Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ <
). ΠΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ is_unique1
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ==
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π½ΡΡ
ΡΠΈΠΏΠΎΠ² Π±Π΅Π· Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ 3
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ (set) Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ.
Π Π°ΡΡΡΠΈΡΠ°ΡΡ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π²ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΡΠ°ΠΌΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΈΠ· Π²ΡΠ΅Ρ
Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΏΠΈΡΠΊΠ° Π² Π΄Π²Π° ΡΠ°Π·Π°, Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ is_unique3
ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ Π²ΡΠ΅Π³ΠΎ Π² Π΄Π²Π° ΡΠ°Π·Π°.
Π’Π΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΡΠΊΡ:
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ is_unique2
, ΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΡΠΎ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΌΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ (ΡΠΈΡΠ»Π° ΠΈ ΡΡΡΠΎΠΊΠΈ). Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ Ρ
Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΌΠΈ/Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, is_unique3
Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠ° ΡΠΏΠΈΡΠΊΠΎΠ².
ΠΠ΄Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ Π΄ΡΡΠ³ΠΈΡ . Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· (Π±Π΅Π· Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠ΄Π°) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ β ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠΈΠ³ΡΡΡ.
Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ. Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π»ΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Ρ Π½ΠΈΠ·ΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°. Π’Π°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΌΠΏΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ, ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ, Π°Π½Π°Π»ΠΈΠ·.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ Π²Π°ΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ).
ΠΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° β ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
ΠΡΠΎΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
- Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ;
- ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°ΠΌΡΠΌ Π²ΡΡΠΎΠΊΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ ΠΈΠ· ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ.
Π Π°Π·Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ:
add | remove | |
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 1 | O(1) | O(N) |
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 2 | O(N) | O(1) |
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 3 | O(log N) | O(log N) |
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 1
ΠΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ° (list) ΠΈΠ»ΠΈ Π² Π½Π°ΡΠ°Π»Π° ΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° (linked list) β O(1).
Π§ΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ β O(N).
ΠΠ΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, Π½ΠΎ ΡΡΡΠ΄Π½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 2
ΠΠ»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ β Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ° (ΠΈΠ»ΠΈ ΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°) β O(N).
ΠΠ°ΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΏΠΈΡΠΊΠ° (ΠΈΠ»ΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°) β O(1).
ΠΠ΅Π³ΠΊΠΎ ΡΠ΄Π°Π»ΠΈΡΡ, Π½ΠΎ ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 3
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π²ΠΎΠΈΡΠ½Π°Ρ ΠΊΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎ "ΡΡΠ΅Π΄Π½Π΅ΠΉ" ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ O(log N), ΡΡΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π±Π»ΠΈΠΆΠ΅ ΠΊ O(1), ΡΠ΅ΠΌ ΠΊ O(N).
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ· ΡΡΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ Π·Π°Π΄Π°ΡΠ°Ρ .
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ°
Π§ΡΠΎΠ±Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ N Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ, Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΡ Π²ΡΠ΅.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 1
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 2
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 3
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: N * O(...) β ΡΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ O(N) * O(...).
ΠΠ΅ΡΠ²Π°Ρ ΠΈ Π²ΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ΄Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π±ΡΡΡΡΠΎ, Π° Π΄ΡΡΠ³ΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π ΠΈΡΠΎΠ³Π΅ ΠΎΠ±ΡΠΈΠΉ ΠΊΠ»Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ°ΠΌΠ°Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
Π’ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π±ΡΡΡΡΠ΅Π΅ Π²ΡΠ΅Ρ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΅Π΅ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ O(N log N) Π±Π»ΠΈΠΆΠ΅ ΠΊ O(1), ΡΠ΅ΠΌ ΠΊ O(N).
10 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΉΠ΄Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ 10 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ N
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ 10.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 1
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 2
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ 3
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠ΅ΡΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΌΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ Π½Π΅Π΅ ΠΎΡΠ΅Π½Ρ Π΄Π΅ΡΠ΅Π²Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠΎΡΠ°Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ "ΡΠ°ΠΌΠΎΠΉ Π»ΡΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ". Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π°Π΄Π°ΡΠΈ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ.
Π ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΈ ΠΊΠ°ΠΊ Π΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ :)
ΠΠ½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ?
ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ΠΏΡΠΎΡΡΠ°Ρ ΡΠ΅ΠΌΠ° Π΄Π»Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ: Π½Π΅ Ρ ΠΊΠΎΠ³ΠΎ ΡΠΏΡΠΎΡΠΈΡΡ ΠΈ ΡΡΠΎ-ΡΠΎ ΡΡΠΎΡΠ½ΠΈΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΊΡΡΡ Β«ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Β», Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡΠ½ΡΡ Π²Π΅Π±ΠΈΠ½Π°ΡΠΎΠ² Π²Ρ:
- ΠΈΠ·ΡΡΠΈΡΠ΅ ΡΠ»Π΅Π½Π³, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΡΡ Π²ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΡΠ·ΡΠΊ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ ;
- Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ;
- ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΠ΅ΡΡ ΠΊ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
ΠΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊ junior, ΡΠ°ΠΊ ΠΈ middle-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ.