ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืžื›ื ืก ื”ื™ื“ืจื” - ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื•ืื—ืกื•ืŸ ื‘ื–ื™ื›ืจื•ืŸ

ืงืจื” ืœืคื ื™ ื›ืžื” ื™ืžื™ื ื›ื ืก ื”ื™ื“ืจื”. ื”ื—ื‘ืจ'ื” ืžืงื‘ื•ืฆืช JUG.ru ื”ื–ืžื™ื ื• ื“ื•ื‘ืจื™ ื—ืœื•ืžื•ืช (ืœื–ืœื™ ืœืžืคื•ืจื˜! ืงืœื™ืฃ ืงืœื™ืง! ืžืจื˜ื™ืŸ ืงืœืคืžืŸ!) ื•ื”ืงื“ื™ืฉื• ื™ื•ืžื™ื™ื ืœืžืขืจื›ื•ืช ืžื‘ื•ื–ืจื•ืช ื•ืœืžื—ืฉื•ื‘. ืงื•ื ื˜ื• ื”ื™ื” ืื—ื“ ืžืฉืœื•ืฉืช ื”ืฉื•ืชืคื™ื ืœื›ื ืก. ื“ื™ื‘ืจื ื• ื‘ื“ื•ื›ืŸ, ื“ื™ื‘ืจื ื• ืขืœ ื”ืื—ืกื•ืŸ ื”ืžื‘ื•ื–ืจ ืฉืœื ื•, ืฉื™ื—ืงื ื• ื‘ื™ื ื’ื• ื•ืคืชืจื ื• ื—ื™ื“ื•ืช.

ื–ื”ื• ืคื•ืกื˜ ืขื ื ื™ืชื•ื— ืฉืœ ืžืฉื™ืžื•ืช ื‘ืขืžื“ืช Kontur ืžืืช ืžื—ื‘ืจ ื”ื˜ืงืกื˜ ืฉืœื”ื. ืžื™ ื”ื™ื” ืขืœ ื”ื”ื™ื“ืจื” - ื–ื• ื”ืกื™ื‘ื” ืฉืœืš ืœื”ื™ื–ื›ืจ ื‘ื—ื•ื•ื™ื” ื”ื ืขื™ืžื”, ืžื™ ืœื ื”ื™ื” - ื”ื–ื“ืžื ื•ืช ืœืžืชื•ื— ืืช ื”ืžื•ื— ืฉืœืš ื’ื“ื•ืœ O-ืกึดืžื•ึผืŸ.

ื”ื™ื• ืืคื™ืœื• ืžืฉืชืชืคื™ื ืฉืคื™ืจืงื• ืืช ื”ืคืœื™ืคืฆ'ืจ ืœืฉืงื•ืคื™ื•ืช ื›ื“ื™ ืœืจืฉื•ื ืืช ื”ื—ืœื˜ืชื. ืื ื™ ืœื ืฆื•ื—ืง - ื”ื ืžืกืจื• ืืช ืขืจื™ืžืช ื”ื ื™ื™ืจ ื”ื–ื• ืœืื™ืžื•ืช:

ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืžื›ื ืก ื”ื™ื“ืจื” - ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื•ืื—ืกื•ืŸ ื‘ื–ื™ื›ืจื•ืŸ

ื”ื™ื• ืฉืœื•ืฉ ืžืฉื™ืžื•ืช ื‘ืกืš ื”ื›ืœ:

  • ืœื’ื‘ื™ ื‘ื—ื™ืจืช ื”ืขืชืงื™ื ืœืคื™ ืžืฉืงืœื™ื ืœืื™ื–ื•ืŸ ืขื•ืžืกื™ื
  • ืขืœ ืžื™ื•ืŸ ืชื•ืฆืื•ืช ืฉืื™ืœืชื•ืช ืžื•ืœ ืžืกื“ ื ืชื•ื ื™ื ื‘ื–ื™ื›ืจื•ืŸ
  • ืขืœ ื”ืขื‘ืจืช ืžืฆื‘ ื‘ืžืขืจื›ืช ืžื‘ื•ื–ืจืช ืขื ื˜ื•ืคื•ืœื•ื’ื™ื™ืช ื˜ื‘ืขืช

ืžืฉื™ืžื” 1. ClusterClient

ื”ื™ื” ืฆื•ืจืš ืœื”ืฆื™ืข ืืœื’ื•ืจื™ืชื ืœื‘ื—ื™ืจื” ื™ืขื™ืœื” ืฉืœ K ืžืชื•ืš N ื”ืขืชืงื™ื ืžืฉื•ืงืœืœื™ื ืฉืœ ืžืขืจื›ืช ืžื‘ื•ื–ืจืช:

ืขืœ ื”ืฆื•ื•ืช ืฉืœืš ืžื•ื˜ืœืช ื”ืžืฉื™ืžื” ืœืคืชื— ืกืคืจื™ื™ืช ืœืงื•ื— ืขื‘ื•ืจ ืืฉื›ื•ืœ ืžื‘ื•ื–ืจ ืžืืกื™ื‘ื™ ืฉืœ N ืฆืžืชื™ื. ื”ืกืคืจื™ื™ื” ืชืขืงื•ื‘ ืื—ืจ ืžื˜ื ื ืชื•ื ื™ื ืฉื•ื ื™ื ื”ืงืฉื•ืจื™ื ืœืฆืžืชื™ื (ืœืžืฉืœ, ื–ืžืŸ ื”ืื—ื–ื•ืจ ืฉืœื”ื, ืฉื™ืขื•ืจื™ ืชื’ื•ื‘ื” ืฉืœ 4xx/5xx ื•ื›ื•') ื•ืชืงืฆื” ืœื”ื ืžืฉืงืœื™ ื ืงื•ื“ื” ืฆืคื” W1..WN. ืขืœ ืžื ืช ืœืชืžื•ืš ื‘ืืกื˜ืจื˜ื’ื™ื™ืช ื”ื‘ื™ืฆื•ืข ื‘ืžืงื‘ื™ืœ, ื”ืกืคืจื™ื™ื” ืฆืจื™ื›ื” ืœื”ื™ื•ืช ืžืกื•ื’ืœืช ืœื‘ื—ื•ืจ K ืžืชื•ืš N ืฆืžืชื™ื ื‘ืื•ืคืŸ ืืงืจืื™ - ื”ืกื™ื›ื•ื™ ืœื”ื™ื‘ื—ืจ ืฆืจื™ืš ืœื”ื™ื•ืช ืคืจื•ืคื•ืจืฆื™ื•ื ืœื™ ืœืžืฉืงืœ ื”ืฆื•ืžืช.

ื”ืฆืข ืืœื’ื•ืจื™ืชื ืœื‘ื—ื™ืจืช ืฆืžืชื™ื ื‘ื™ืขื™ืœื•ืช. ื”ืขืจืš ืืช ื”ืžื•ืจื›ื‘ื•ืช ื”ื—ื™ืฉื•ื‘ื™ืช ืฉืœื• ื‘ืืžืฆืขื•ืช ืกื™ืžื•ืŸ O ื’ื“ื•ืœ.

ืœืžื” ื”ื›ืœ ื‘ืื ื’ืœื™ืช?

ื›ื™ ื‘ืฆื•ืจื” ื–ื• ืžืฉืชืชืคื™ ื”ื›ื ืก ื ืœื—ืžื• ืื™ืชื ื•ื›ื™ ืื ื’ืœื™ืช ื”ื™ื™ืชื” ื”ืฉืคื” ื”ืจืฉืžื™ืช ืฉืœ ื”ื™ื“ืจื”. ื”ืžืฉื™ืžื•ืช ื ืจืื• ื›ืš:

ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืžื›ื ืก ื”ื™ื“ืจื” - ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื•ืื—ืกื•ืŸ ื‘ื–ื™ื›ืจื•ืŸ

ืงื—ื• ื ื™ื™ืจ ื•ืขื™ืคืจื•ืŸ, ืชื—ืฉื‘ื•, ืืœ ืชืžื”ืจื• ืœืคืชื•ื— ืกืคื•ื™ืœืจื™ื ืžื™ื“ ๐Ÿ™‚

ื ื™ืชื•ื— ื”ืคืชืจื•ืŸ (ื•ื™ื“ืื•)

ื”ื—ืœ ืž-5:53, 4 ื“ืงื•ืช ื‘ืœื‘ื“:

ื•ื”ื ื” ืื™ืš ื”ื—ื‘ืจ'ื” ืขื ื”ืคืœื™ืคืฆ'ืจ ื”ืขืœื• ืืช ื”ืคืชืจื•ืŸ ืฉืœื”ื:


ื ื™ืชื•ื— ื”ืคืชืจื•ืŸ (ื˜ืงืกื˜)

ื”ืคืชืจื•ืŸ ื”ื‘ื ื ืžืฆื ืขืœ ืคื ื™ ื”ืฉื˜ื—: ืกื›ื ืืช ื”ืžืฉืงื•ืœื•ืช ืฉืœ ื›ืœ ื”ื”ืขืชืงื™ื, ืฆื•ืจ ืžืกืคืจ ืืงืจืื™ ืž-0 ืœืกื›ื•ื ื›ืœ ื”ืžืฉืงื•ืœื•ืช, ื•ืœืื—ืจ ืžื›ืŸ ื‘ื—ืจ ืขื•ืชืง i ื›ืš ืฉืกื›ื•ื ืžืฉืงืœื™ ื”ืขืชืง ืž-0 ืขื“ (i-1) ื”ื•ื ืงื˜ืŸ ืžืžืกืคืจ ืืงืจืื™, ื•ืกื›ื•ื ื”ืžืฉืงืœ ืฉืœ ื”ืขืชืง ืž-0 ืขื“ i-th - ื™ื•ืชืจ ืžืžื ื•. ืื– ื ื™ืชืŸ ื™ื”ื™ื” ืœื‘ื—ื•ืจ ื”ืขืชืง ืื—ื“, ื•ื›ื“ื™ ืœื‘ื—ื•ืจ ืืช ื”ื‘ื, ืขืœื™ืš ืœื—ื–ื•ืจ ืขืœ ื›ืœ ื”ื”ืœื™ืš ืžื‘ืœื™ ืœื”ืชื—ืฉื‘ ื‘ื”ืขืชืง ืฉื ื‘ื—ืจ. ืขื ืืœื’ื•ืจื™ืชื ื›ื–ื”, ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ื‘ื—ื™ืจืช ื”ืขืชืง ืื—ื“ ื”ื™ื O(N), ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ื‘ื—ื™ืจืช ื”ืขืชืงื™ื ืฉืœ K ื”ื™ื O(N K) ~ O(N2).

ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืžื›ื ืก ื”ื™ื“ืจื” - ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื•ืื—ืกื•ืŸ ื‘ื–ื™ื›ืจื•ืŸ

ื”ืžื•ืจื›ื‘ื•ืช ื”ืจื™ื‘ื•ืขื™ืช ื”ื™ื ื’ืจื•ืขื”, ืืš ื ื™ืชืŸ ืœืฉืคืจ ืื•ืชื”. ืœืฉื ื›ืš, ื ื‘ื ื” ืขืฅ ืžืงื˜ืข ืขื‘ื•ืจ ืกื›ื•ืžื™ ืžืฉืงืœื™ื. ื™ืชืงื‘ืœ ืขืฅ ื‘ืขื•ืžืง lg N, ืฉืขืœื™ื• ื™ื”ื™ื• ืžืฉืงื•ืœื•ืช ื”ืขืชืง, ื•ื‘ืฉืืจ ื”ืฆืžืชื™ื - ืกื›ื•ืžื™ื ื—ืœืงื™ื™ื, ืขื“ ืœืกื›ื•ื ื›ืœ ื”ืžืฉืงื•ืœื•ืช ื‘ืฉื•ืจืฉ ื”ืขืฅ. ืœืื—ืจ ืžื›ืŸ, ืื ื• ื™ื•ืฆืจื™ื ืžืกืคืจ ืืงืจืื™ ืž-0 ืœืกื›ื•ื ื›ืœ ื”ืžืฉืงื•ืœื•ืช, ืžื•ืฆืื™ื ืืช ื”ื”ืขืชืง ื”-i, ืžืกื™ืจื™ื ืื•ืชื• ืžื”ืขืฅ ื•ื—ื•ื–ืจื™ื ืขืœ ื”ื”ืœื™ืš ื›ื“ื™ ืœืžืฆื•ื ืืช ื”ื”ืขืชืงื™ื ื”ื ื•ืชืจื™ื. ืขื ืืœื’ื•ืจื™ืชื ื–ื”, ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ื‘ื ื™ื™ืช ืขืฅ ื”ื™ื O(N), ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ืžืฆื™ืืช ื”ืขืชืง ื”-i ื•ื”ืกืจืชื• ืžื”ืขืฅ ื”ื™ื O(lg N), ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ื‘ื—ื™ืจืช ื”ืขืชืงื™ื ืฉืœ K ื”ื™ื O(N + K lg N) ~ O(N lg N) .

ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืžื›ื ืก ื”ื™ื“ืจื” - ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื•ืื—ืกื•ืŸ ื‘ื–ื™ื›ืจื•ืŸ

ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ืœื•ื’ ืœื™ื ื™ืืจื™ ื˜ื•ื‘ื” ื™ื•ืชืจ ืžืžื•ืจื›ื‘ื•ืช ืจื™ื‘ื•ืขื™ืช, ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ K ื’ื“ื•ืœ.

ื–ื” ื”ืืœื’ื•ืจื™ืชื ื”ื–ื” ืžื™ื•ืฉื ื‘ืงื•ื“ ืกืคืจื™ื•ืช ClusterClient ืžื”ืคืจื•ื™ืงื˜ "ะžะพัั‚ะพะบ". (ืฉื, ื”ืขืฅ ื‘ื ื•ื™ ื‘-O(N lg N), ืื‘ืœ ื–ื” ืœื ืžืฉืคื™ืข ืขืœ ื”ืžื•ืจื›ื‘ื•ืช ื”ืกื•ืคื™ืช ืฉืœ ื”ืืœื’ื•ืจื™ืชื.)

ืžืฉื™ืžื” 2. ื–ื‘ืจื”

ื”ื™ื” ืฆื•ืจืš ืœื”ืฆื™ืข ืืœื’ื•ืจื™ืชื ืœืžื™ื•ืŸ ื™ืขื™ืœ ืฉืœ ืžืกืžื›ื™ื ื‘ื–ื™ื›ืจื•ืŸ ืขืœ ื™ื“ื™ ืฉื“ื” ืฉืจื™ืจื•ืชื™ ืœืœื ืื™ื ื“ืงืก:

ืขืœ ื”ืฆื•ื•ืช ืฉืœืš ืžื•ื˜ืœืช ื”ืžืฉื™ืžื” ืœืคืชื— ืžืกื“ ื ืชื•ื ื™ื ืฉืœ ืžืกืžื›ื™ื ื‘ื–ื™ื›ืจื•ืŸ. ืขื•ืžืก ืขื‘ื•ื“ื” ื ืคื•ืฅ ื™ื”ื™ื” ื‘ื—ื™ืจืช N ืžืกืžื›ื™ื ืžืžื•ื™ื ื™ื ืขืœ ืคื™ ืฉื“ื” ืžืกืคืจื™ ืฉืจื™ืจื•ืชื™ (ืฉืื™ื ื• ืžืฆื•ืจืฃ ืœืื™ื ื“ืงืก) ืžืชื•ืš ืื•ืกืฃ ื‘ื’ื•ื“ืœ M (ื‘ื“ืจืš ื›ืœืœ N < 100 << M). ืขื•ืžืก ืขื‘ื•ื“ื” ืžืขื˜ ืคื—ื•ืช ื ืคื•ืฅ ื™ื”ื™ื” ื‘ื—ื™ืจืช N ื”ืขืœื™ื•ืŸ ืœืื—ืจ ื“ื™ืœื•ื’ ืขืœ ืžืกืžื›ื™ S ืžื•ื‘ื™ืœื™ื (S ~ N).

ื”ืฆืข ืืœื’ื•ืจื™ืชื ืœื‘ื™ืฆื•ืข ืฉืื™ืœืชื•ืช ื›ืืœื” ื‘ื™ืขื™ืœื•ืช. ื”ืขืจืš ืืช ื”ืžื•ืจื›ื‘ื•ืช ื”ื—ื™ืฉื•ื‘ื™ืช ืฉืœื• ื‘ืืžืฆืขื•ืช ืกื™ืžื•ืŸ O ื’ื“ื•ืœ ื‘ืžืงืจื” ื”ืžืžื•ืฆืข ื•ื‘ืชืจื—ื™ืฉื™ ื”ืžืงืจื” ื”ื’ืจื•ืข ื‘ื™ื•ืชืจ.

ื ื™ืชื•ื— ื”ืคืชืจื•ืŸ (ื•ื™ื“ืื•)

ื”ื—ืœ ืž-34:50, 6 ื“ืงื•ืช ื‘ืœื‘ื“:


ื ื™ืชื•ื— ื”ืคืชืจื•ืŸ (ื˜ืงืกื˜)

ืคืชืจื•ืŸ ืžืฉื˜ื—: ืžื™ื™ืŸ ืืช ื›ืœ ื”ืžืกืžื›ื™ื (ืœื“ื•ื’ืžื” ืขื ืกื™ื“ื•ืจ ืžื”ื™ืจ), ื•ืื– ืงื— ืžืกืžื›ื™ N+S. ื‘ืžืงืจื” ื–ื”, ืžื•ืจื›ื‘ื•ืช ื”ืžื™ื•ืŸ ื”ื™ื ื‘ืžืžื•ืฆืข O(M lg M), ื‘ืžืงืจื” ื”ืจืข O(M2).

ื‘ืจื•ืจ ืฉืœืžื™ื•ืŸ ื›ืœ ื”ืžืกืžื›ื™ื ืฉืœ M ื•ืื– ืœืงื—ืช ืจืง ื—ืœืง ืงื˜ืŸ ืžื”ื ื–ื” ืœื ื™ืขื™ืœ. ื›ื“ื™ ืœื ืœืžื™ื™ืŸ ืืช ื›ืœ ื”ืžืกืžื›ื™ื, ืžืชืื™ื ืืœื’ื•ืจื™ืชื ื‘ื—ื™ืจื” ืžื”ื™ืจื”, ืฉื™ื‘ื—ืจ N + S ืžื”ืžืกืžื›ื™ื ื”ืจืฆื•ื™ื™ื (ื ื™ืชืŸ ืœืžื™ื™ืŸ ืื•ืชื ืœืคื™ ื›ืœ ืืœื’ื•ืจื™ืชื). ื‘ืžืงืจื” ื–ื”, ื”ืžื•ืจื›ื‘ื•ืช ืชืงื˜ืŸ ืœ-O(M) ื‘ืžืžื•ืฆืข, ื‘ืขื•ื“ ืฉื”ืžืงืจื” ื”ื’ืจื•ืข ื‘ื™ื•ืชืจ ื™ื™ืฉืืจ ื–ื”ื”.

ืขื ื–ืืช, ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ืืช ื–ื” ืืคื™ืœื• ื™ื•ืชืจ ื‘ื™ืขื™ืœื•ืช - ื”ืฉืชืžืฉ ื‘ืืœื’ื•ืจื™ืชื ื”ื–ืจืžืช ืขืจื™ืžื” ื‘ื™ื ืืจื™ืช. ื‘ืžืงืจื” ื–ื”, ื”ืžืกืžื›ื™ื ื”ืจืืฉื•ื ื™ื ืฉืœ N+S ืžืชื•ื•ืกืคื™ื ืœ-min- ืื• max-heap (ื‘ื”ืชืื ืœื›ื™ื•ื•ืŸ ื”ืžื™ื•ืŸ), ื•ืื– ื›ืœ ืžืกืžืš ื”ื‘ื ืžื•ืฉื•ื•ื” ืœืฉื•ืจืฉ ื”ืขืฅ, ื”ืžื›ื™ืœ ืืช ื”ืžืกืžืš ื”ืžื™ื ื™ืžืœื™ ืื• ื”ืžืงืกื™ืžืœื™ ื”ื ื•ื›ื—ื™, ื•ืžืชื•ื•ืกืฃ ืœืขืฅ ื‘ืžื™ื“ืช ื”ืฆื•ืจืš. . ื‘ืžืงืจื” ื–ื”, ื”ืžื•ืจื›ื‘ื•ืช ื‘ืžืงืจื” ื”ื’ืจื•ืข ื‘ื™ื•ืชืจ, ื›ืืฉืจ ืืชื” ืฆืจื™ืš ื›ืœ ื”ื–ืžืŸ ืœื‘ื ื•ืช ืžื—ื“ืฉ ืืช ื”ืขืฅ, ื”ื™ื O(M lg M), ื”ืžื•ืจื›ื‘ื•ืช ื‘ืžืžื•ืฆืข ื”ื™ื O(M), ื›ืžื• ื‘-quickselect.

ืขื ื–ืืช, ื”ื–ืจืžืช ืขืจื™ืžื” ืžืชื‘ืจืจืช ื›ื™ืขื™ืœื” ื™ื•ืชืจ ื‘ืฉืœ ื”ืขื•ื‘ื“ื” ืฉื‘ืคื•ืขืœ ื ื™ืชืŸ ืœื–ืจื•ืง ืืช ืจื•ื‘ ื”ืžืกืžื›ื™ื ืžื‘ืœื™ ืœื‘ื ื•ืช ืžื—ื“ืฉ ืืช ื”ืขืจื™ืžื” ืœืื—ืจ ื”ืฉื•ื•ืื” ืื—ืช ืขื ืืœืžื ื˜ ื”ืฉื•ืจืฉ ืฉืœื•. ืžื™ื•ืŸ ื›ื–ื” ืžื™ื•ืฉื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ ืžืกืžื›ื™ื ื‘ื–ื™ื›ืจื•ืŸ Zebra ืฉืคื•ืชื— ื•ื ืขืฉื” ื‘ื• ืฉื™ืžื•ืฉ ื‘-Kontur.

ืžืฉื™ืžื” 3. ื—ื™ืœื•ืคื™ ืžื“ื™ื ื”

ื”ื™ื” ืฆื•ืจืš ืœื”ืฆื™ืข ืืช ื”ืืœื’ื•ืจื™ืชื ื”ื™ืขื™ืœ ื‘ื™ื•ืชืจ ืœืฉื™ื ื•ื™ ืžืฆื‘ื™ื:

ืขืœ ื”ืฆื•ื•ืช ืฉืœืš ืžื•ื˜ืœืช ื”ืžืฉื™ืžื” ืœืคืชื— ืžื ื’ื ื•ืŸ ื—ื™ืœื•ืคื™ ืžืฆื‘ื™ื ืžื”ื•ื“ืจ ืขื‘ื•ืจ ืืฉื›ื•ืœ ืžื‘ื•ื–ืจ ืฉืœ N ืฆืžืชื™ื. ื™ืฉ ืœื”ืขื‘ื™ืจ ืืช ืžืฆื‘ ื”ืฆื•ืžืช ื”-I ืœืฆื•ืžืช (i+1) ื”ืฆื•ืžืช, ื™ืฉ ืœื”ืขื‘ื™ืจ ืืช ืžืฆื‘ ื”ืฆื•ืžืช ื”-N ืœืฆื•ืžืช ื”ืจืืฉื•ืŸ. ื”ืคืขื•ืœื” ื”ื ืชืžื›ืช ื”ื™ื—ื™ื“ื” ื”ื™ื ื—ื™ืœื•ืคื™ ื”ืžืฆื‘ื™ื ื›ืืฉืจ ืฉื ื™ ืฆืžืชื™ื ืžื—ืœื™ืคื™ื ืืช ื”ืžืฆื‘ื™ื ืฉืœื”ื ื‘ืฆื•ืจื” ืื˜ื•ืžื™ืช. ื™ื“ื•ืข ืฉื”ื—ืœืคืช ืžืฆื‘ ืœื•ืงื—ืช M ืืœืคื™ื•ืช ืฉื ื™ื•ืช. ื›ืœ ืฆื•ืžืช ืžืกื•ื’ืœ ืœื”ืฉืชืชืฃ ื‘ื”ื—ืœืคืช ืžืฆื‘ ื‘ื•ื“ื“ืช ื‘ื›ืœ ืจื’ืข ื ืชื•ืŸ.

ื›ืžื” ื–ืžืŸ ืœื•ืงื— ืœื”ืขื‘ื™ืจ ืืช ื”ืžืฆื‘ื™ื ืฉืœ ื›ืœ ื”ืฆืžืชื™ื ื‘ืืฉื›ื•ืœ?

ื ื™ืชื•ื— ื”ืคืชืจื•ืŸ (ื˜ืงืกื˜)

ืคืชืจื•ืŸ ืžืฉื˜ื—: ื”ื—ืœืฃ ืืช ื”ืžืฆื‘ื™ื ืฉืœ ื”ืืœืžื ื˜ ื”ืจืืฉื•ืŸ ื•ื”ืฉื ื™, ืœืื—ืจ ืžื›ืŸ ื”ืจืืฉื•ืŸ ื•ื”ืฉืœื™ืฉื™, ืœืื—ืจ ืžื›ืŸ ื”ืจืืฉื•ืŸ ื•ื”ืจื‘ื™ืขื™ ื•ื›ืŸ ื”ืœืื”. ืœืื—ืจ ื›ืœ ื”ื—ืœืคื”, ื”ืžืฆื‘ ืฉืœ ืืœืžื ื˜ ืื—ื“ ื™ื”ื™ื” ื‘ืžื™ืงื•ื ื”ืจืฆื•ื™. ืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ืชืžื•ืจื•ืช O(N) ื•ืœื‘ืœื•ืช ื–ืžืŸ O(N M).

ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืžื›ื ืก ื”ื™ื“ืจื” - ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื•ืื—ืกื•ืŸ ื‘ื–ื™ื›ืจื•ืŸ

ื”ื–ืžืŸ ื”ืœื™ื ื™ืืจื™ ื”ื•ื ืืจื•ืš, ืื– ืืชื” ื™ื›ื•ืœ ืœื”ื—ืœื™ืฃ ืืช ื”ืžืฆื‘ื™ื ืฉืœ ืืœืžื ื˜ื™ื ื‘ื–ื•ื’ื•ืช: ื”ืจืืฉื•ืŸ ืขื ื”ืฉื ื™, ื”ืฉืœื™ืฉื™ ืขื ื”ืจื‘ื™ืขื™, ื•ื›ืŸ ื”ืœืื”. ืœืื—ืจ ื›ืœ ื—ื™ืœื•ืคื™ ืžื“ื™ื ื”, ื›ืœ ืืœืžื ื˜ ืฉื ื™ ื™ื”ื™ื” ื‘ืžื™ืงื•ื ื”ื ื›ื•ืŸ. ืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ืชืžื•ืจื•ืช O(lg N) ื•ืœื‘ื–ื‘ื– ื–ืžืŸ O(M lg N).

ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืžื›ื ืก ื”ื™ื“ืจื” - ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื•ืื—ืกื•ืŸ ื‘ื–ื™ื›ืจื•ืŸ

ืขื ื–ืืช, ืืคืฉืจ ืœื”ืคื•ืš ืืช ื”ื”ืกื˜ื” ืœื™ืขื™ืœื” ืขื•ื“ ื™ื•ืชืจ - ืœื ื‘ืœื™ื ืืจื™ืช, ืืœื ื‘ื–ืžืŸ ืงื‘ื•ืข. ื›ื“ื™ ืœืขืฉื•ืช ื–ืืช, ื‘ืฉืœื‘ ื”ืจืืฉื•ืŸ, ืืชื” ืฆืจื™ืš ืœื”ื—ืœื™ืฃ ืืช ืžืฆื‘ ื”ืืœืžื ื˜ ื”ืจืืฉื•ืŸ ืขื ื”ืื—ืจื•ืŸ, ื”ืฉื ื™ ืขื ื”ืœืคื ื™ ืื—ืจื•ืŸ, ื•ื›ืŸ ื”ืœืื”. ื”ืžืฆื‘ ืฉืœ ื”ืืœืžื ื˜ ื”ืื—ืจื•ืŸ ื™ื”ื™ื” ื‘ืžื™ืงื•ื ื”ื ื›ื•ืŸ. ื•ืขื›ืฉื™ื• ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื—ืœื™ืฃ ืืช ื”ืžืฆื‘ ืฉืœ ื”ื™ืกื•ื“ ื”ืฉื ื™ ืขื ื”ืื—ืจื•ืŸ, ื”ืฉืœื™ืฉื™ ืขื ื”ืœืคื ื™ ืื—ืจื•ืŸ, ื•ื›ืŸ ื”ืœืื”. ืœืื—ืจ ืกื‘ื‘ ื—ื™ืœื•ืคื™ื ื–ื”, ื”ืžืฆื‘ื™ื ืฉืœ ื›ืœ ื”ืืœืžื ื˜ื™ื ื™ื”ื™ื• ื‘ืžื™ืงื•ื ื”ื ื›ื•ืŸ. ื™ื”ื™ื• ืชืžื•ืจื•ืช O(2M) ~ O(1) ื‘ืกืš ื”ื›ืœ.

ื ื™ืชื•ื— ืžืฉื™ืžื•ืช ืžื›ื ืก ื”ื™ื“ืจื” - ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื•ืื—ืกื•ืŸ ื‘ื–ื™ื›ืจื•ืŸ

ืคืชืจื•ืŸ ื›ื–ื” ืœื ื™ืคืชื™ืข ื›ืœืœ ืžืชืžื˜ื™ืงืื™ ืฉืขื“ื™ื™ืŸ ื–ื•ื›ืจ ืฉืกื™ื‘ื•ื‘ ื”ื•ื ื”ืจื›ื‘ ืฉืœ ืฉืชื™ ืกื™ืžื˜ืจื™ื•ืช ืฆื™ืจื™ื•ืช. ืื’ื‘, ื–ื” ืžื•ื›ืœืœ ื‘ืื•ืคืŸ ื˜ืจื™ื•ื•ื™ืืœื™ ืขื‘ื•ืจ ืชื–ื•ื–ื” ืœื ื‘ืื—ื“, ืืœื ืœืคื™ ืžื™ืงื•ืžื™ K < N. (ื›ืชื•ื‘ ื‘ืชื’ื•ื‘ื•ืช ืื™ืš ื‘ื“ื™ื•ืง.)

ืื”ื‘ืชื ืคืื–ืœื™ื? ืžื›ื™ืจื™ื ืคืชืจื•ื ื•ืช ืื—ืจื™ื? ืฉืชืคื• ื‘ืชื’ื•ื‘ื•ืช.

ื•ื”ื ื” ื›ืžื” ืงื™ืฉื•ืจื™ื ืฉื™ืžื•ืฉื™ื™ื ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ:

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”