рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рдЕрд╣реЛ рд╣рд╛рдмреНрд░! рд▓реЗрдЦрд╛рдЪрд╛ рдЕрдиреБрд╡рд╛рдж рдореА рддреБрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдЖрдгреВрди рджреЗрдд рдЖрд╣реЗ
"рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕рд╛ рдХрд╛рд░реНрдп рдХрд░рддреЛ".

рдЬреЗрд╡реНрд╣рд╛ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рддреЗрд╡реНрд╣рд╛ рдореА рдорджрдд рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА рдкрд░рдВрддреБ рдХрд╛рд╣реАрддрд░реА рдЧрд╣рд╛рд│ рдЖрд╣реЗ рдЕрд╕реЗ рд╡рд╛рдЯрддреЗ. рддреЗ рд╕рд░реНрд╡рддреНрд░ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд. рд▓рд╣рд╛рди рдЖрдгрд┐ рдЙрдкрдпреБрдХреНрдд SQLite рдкрд╛рд╕реВрди рд╢рдХреНрддрд┐рд╢рд╛рд▓реА Teradata рдкрд░реНрдпрдВрдд рдЕрдиреЗрдХ рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд. рдкрд░рдВрддреБ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгрд╛рд░реЗ рдХрд╛рд╣реА рд▓реЗрдЦ рдЖрд╣реЗрдд. рдХрд┐рддреА рдХрдореА рдкрд░рд┐рдгрд╛рдо рдЖрд╣реЗрдд рд╣реЗ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА "howdoesarelationaldatabasework" рд╡рд╛рдкрд░реВрди рд╕реНрд╡рддрдГрдЪрд╛ рд╢реЛрдз рдШреЗрдК рд╢рдХрддрд╛. рд╢рд┐рд╡рд╛рдп рд╣реЗ рд▓реЗрдЦ рдЫреЛрдЯреЗ рдЖрд╣реЗрдд. рдЬрд░ рддреБрдореНрд╣реА рдирд╡реАрдирддрдо рдЧреБрд│рдЧреБрд│реАрдд рддрдВрддреНрд░рдЬреНрдЮрд╛рди (рдмрд┐рдЧрдбреЗрдЯрд╛, NoSQL рдХрд┐рдВрд╡рд╛ JavaScript) рд╢реЛрдзрдд рдЕрд╕рд╛рд▓, рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгрд╛рд░реЗ рдЕрдзрд┐рдХ рд╕рдЦреЛрд▓ рд▓реЗрдЦ рд╕рд╛рдкрдбрддреАрд▓.

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреВрдк рдЬреБрдиреЗ рдЖрдгрд┐ рдЦреВрдк рдХрдВрдЯрд╛рд│рд╡рд╛рдгреЗ рдЖрд╣реЗрдд рдХрд╛ рд╡рд┐рджреНрдпрд╛рдкреАрда рдЕрднреНрдпрд╛рд╕рдХреНрд░рдо, рд╢реЛрдзрдирд┐рдмрдВрдз рдЖрдгрд┐ рдкреБрд╕реНрддрдХрд╛рдВрдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ?

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рдПрдХ рд╡рд┐рдХрд╕рдХ рдореНрд╣рдгреВрди, рдорд▓рд╛ рд╕рдордЬрдд рдирд╛рд╣реА рдЕрд╕реЗ рдХрд╛рд╣реАрддрд░реА рд╡рд╛рдкрд░рдгреЗ рдорд▓рд╛ рдЖрд╡рдбрдд рдирд╛рд╣реА. рдЖрдгрд┐ рдЬрд░ рдбреЗрдЯрд╛рдмреЗрд╕ 40 рд╡рд░реНрд╖рд╛рдВрд╣реВрди рдЕрдзрд┐рдХ рдХрд╛рд│ рд╡рд╛рдкрд░рд▓рд╛ рдЧреЗрд▓рд╛ рдЕрд╕реЗрд▓ рддрд░, рдПрдХ рдХрд╛рд░рдг рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЧреЗрд▓реНрдпрд╛ рдХрд╛рд╣реА рд╡рд░реНрд╖рд╛рдВрдд, рдореА рджрд░рд░реЛрдЬ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реЗ рд╣реЗ рд╡рд┐рдЪрд┐рддреНрд░ рдмреНрд▓реЕрдХ рдмреЙрдХреНрд╕ рдЦрд░реЛрдЦрд░ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдореА рд╢реЗрдХрдбреЛ рддрд╛рд╕ рдШрд╛рд▓рд╡рд▓реЗ рдЖрд╣реЗрдд. рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреВрдк рдордиреЛрд░рдВрдЬрдХ рдХрд╛рд░рдг рддреЗ рдЙрдкрдпреБрдХреНрдд рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рддрд╛ рдпреЗрдгреНрдпрд╛рдЬреЛрдЧреНрдпрд╛ рд╕рдВрдХрд▓реНрдкрдирд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд. рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рдд рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕реЗрд▓, рдкрд░рдВрддреБ рдпрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╖рдпрд╛рд╡рд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдХрд┐рдВрд╡рд╛ рдкреНрд░рд╡реГрддреНрддреА рдХрдзреАрдЪ рдирд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рдпрд╛ рд▓реЗрдЦрд╛рдЪрд╛ рдЖрдирдВрдж рдШреНрдпрд╛рд╡рд╛.

рдпрд╛ рд▓реЗрдЦрд╛рдЪреЗ рд╢реАрд░реНрд╖рдХ рд╕реНрдкрд╖реНрдЯ рдЕрд╕рд▓реЗ рддрд░реА, рдпрд╛ рд▓реЗрдЦрд╛рдЪрд╛ рдЙрджреНрджреЗрд╢ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕рд╛ рд╡рд╛рдкрд░рд╛рдпрдЪрд╛ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ рдирд╛рд╣реА. рддреНрдпрд╛рдореБрд│реЗ, рдПрдХ рд╕рд╛рдзреА рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдирдВрддреА рдЖрдгрд┐ рдореВрд▓рднреВрдд рдкреНрд░рд╢реНрди рдХрд╕реЗ рд▓рд┐рд╣рд╛рдпрдЪреЗ рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдорд╛рд╣рд┐рдд рдЕрд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ RAW; рдЕрдиреНрдпрдерд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рд▓реЗрдЦ рд╕рдордЬрдгрд╛рд░ рдирд╛рд╣реА. рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рд╣реАрдЪ рдЧреЛрд╖реНрдЯ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдореА рдмрд╛рдХреАрдЪреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗрдИрди.

рдореА рдХрд╛рд╣реА рд╕рдВрдЧрдгрдХ рд╡рд┐рдЬреНрдЮрд╛рди рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреАрдВрд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрди, рдЬрд╕реЗ рдХреА рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреА рд╡реЗрд│ рдЬрдЯрд┐рд▓рддрд╛ (BigO). рдорд▓рд╛ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА рддреБрдордЪреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реАрдВрдирд╛ рдпрд╛ рд╕рдВрдХрд▓реНрдкрдиреЗрдЪрд╛ рддрд┐рд░рд╕реНрдХрд╛рд░ рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреНрдпрд╛рд╢рд┐рд╡рд╛рдп рддреБрдореНрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рдЧреБрдВрддрд╛рдЧреБрдВрдд рд╕рдордЬреВрди рдШреЗрдК рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА. рд╣рд╛ рдПрдХ рдореЛрдард╛ рд╡рд┐рд╖рдп рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдореА рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрди рдорд▓рд╛ рдХрд╛рдп рд╡рд╛рдЯрддреЗ рддреЗ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ: рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╢реА рд╣реЛрддреЗ рдПрд╕ рдХреНрдпреВ рдПрд▓ рдЪреМрдХрд╢реА. рдореА рдлрдХреНрдд рдкрд░рд┐рдЪрдп рдХрд░реВрди рджреЗрддреЛ рдореВрд▓рднреВрдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрдХрд▓реНрдкрдирд╛рдЬреЗрдгреЗрдХрд░реВрди рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реБрдбрдЦрд╛рд▓реА рдХрд╛рдп рдЪрд╛рд▓рд▓реЗ рдЖрд╣реЗ рдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдпреЗрдИрд▓.

рд╣рд╛ рдПрдХ рд▓рд╛рдВрдмрд▓рдЪрдХ рдЖрдгрд┐ рддрд╛рдВрддреНрд░рд┐рдХ рд▓реЗрдЦ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рдмрд░реЗрдЪ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд, рддреЗ рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдордЪрд╛ рд╡реЗрд│ рдШреНрдпрд╛. рдХрд╛рд╣реА рд╕рдВрдХрд▓реНрдкрдирд╛ рд╕рдордЬрдгреЗ рдХрдареАрдг рдЕрд╕реВ рд╢рдХрддреЗ; рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рд╡рдЧрд│реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддрд░реАрд╣реА рд╕рд╛рдорд╛рдиреНрдп рдХрд▓реНрдкрдирд╛ рдорд┐рд│рд╡реВ рд╢рдХрддрд╛.

рддреБрдордЪреНрдпрд╛рддреАрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгрдХрд╛рд░рд╛рдВрд╕рд╛рдареА, рд╣рд╛ рд▓реЗрдЦ 3 рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗрд▓рд╛ рдЖрд╣реЗ:

  • рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдЖрдгрд┐ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдШрдЯрдХрд╛рдВрдЪреЗ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди
  • рдХреНрд╡реЗрд░реА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди
  • рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдгрд┐ рдмрдлрд░ рдкреВрд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд╛рдЪрд╛ рдЖрдврд╛рд╡рд╛

рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреАрдВрдХрдбреЗ рдкрд░рдд

рд╡рд░реНрд╖рд╛рдкреВрд░реНрд╡реА (рдЖрдХрд╛рд╢рдЧрдВрдЧреЗрдд, рдЦреВрдк рджреВрд░...), рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рддреЗ рдХреЛрдбрд┐рдВрдЧ рдХрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдЕрдЪреВрдХрдкрдгреЗ рдорд╛рд╣рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ. рддреНрдпрд╛рдВрдирд╛ рддреНрдпрд╛рдВрдЪреЗ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдордирд╛рдкрд╛рд╕реВрди рдорд╛рд╣рд┐рдд рд╣реЛрддреЗ рдХрд╛рд░рдг рддреНрдпрд╛рдВрдирд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реНрд▓реЛ рдХреЙрдореНрдкреНрдпреБрдЯрд░рдЪрд╛ CPU рдЖрдгрд┐ рдореЗрдорд░реА рд╡рд╛рдпрд╛ рдШрд╛рд▓рд╡рдгреЗ рдкрд░рд╡рдбрдгрд╛рд░реЗ рдирд╡реНрд╣рддреЗ.

рдпрд╛ рднрд╛рдЧрд╛рдд, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рд╕рдВрдХрд▓реНрдкрдирд╛рдВрдЪреА рдЖрдард╡рдг рдХрд░реВрди рджреЗрдИрди рдХрд╛рд░рдг рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. рдореА рд╣реА рд╕рдВрдХрд▓реНрдкрдирд╛ рдорд╛рдВрдбрдгрд╛рд░ рдЖрд╣реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ.

O(1) рд╡рд┐ O(n2)

рдЖрдЬрдХрд╛рд▓, рдЕрдиреЗрдХ рд╡рд┐рдХрд╛рд╕рдХ рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреНрдпрд╛ рд╡реЗрд│реЗрдЪреНрдпрд╛ рдЬрдЯрд┐рд▓рддреЗрдХрдбреЗ рд▓рдХреНрд╖ рджреЗрдд рдирд╛рд╣реАрдд... рдЖрдгрд┐ рддреЗ рдмрд░реЛрдмрд░ рдЖрд╣реЗрдд!

рдкрд░рдВрддреБ рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рднрд░рдкреВрд░ рдбреЗрдЯрд╛ рд╣рд╛рддрд╛рд│рдд рдЕрд╕рд╛рд▓ (рдореА рд╣рдЬрд╛рд░реЛ рдмреЛрд▓рдд рдирд╛рд╣реА) рдХрд┐рдВрд╡рд╛ рддреБрдореНрд╣реА рдорд┐рд▓рд┐рд╕реЗрдХрдВрджрд╛рдВрдордзреНрдпреЗ рд╕рдВрдШрд░реНрд╖ рдХрд░рдд рдЕрд╕рд╛рд▓, рддрд░ рд╣реА рд╕рдВрдХрд▓реНрдкрдирд╛ рд╕рдордЬреВрди рдШреЗрдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдард░рддреЗ. рдЖрдгрд┐ рдЬрд╕реЗ рдЖрдкрдг рдХрд▓реНрдкрдирд╛ рдХрд░реВ рд╢рдХрддрд╛, рдбреЗрдЯрд╛рдмреЗрд╕рд▓рд╛ рджреЛрдиреНрд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрдЪрд╛ рд╕рд╛рдордирд╛ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧрддреЛ! рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдореБрджреНрджрд╛ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХрддреЗрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдШрд╛рд▓рд╡рдгрд╛рд░ рдирд╛рд╣реА. рд╣реЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдирдВрддрд░ рдЦрд░реНрдЪ-рдЖрдзрд╛рд░рд┐рдд рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪреА рд╕рдВрдХрд▓реНрдкрдирд╛ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕ рдорджрдд рдХрд░реЗрд▓ (рдЦрд░реНрдЪ рдЖрдзрд╛рд░рд┐рдд рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди).

рд╕рдВрдХрд▓реНрдкрдирд╛

рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреА рд╡реЗрд│ рдЬрдЯрд┐рд▓рддрд╛ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рд╕рд╛рдареА рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд┐рддреА рд╡реЗрд│ рд▓рд╛рдЧреЗрд▓ рд╣реЗ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рдпрд╛ рдЬрдЯрд┐рд▓рддреЗрдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдореЛрдареНрдпрд╛ O рдЧрдгрд┐рддреАрдп рдиреЛрдЯреЗрд╢рдирдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рддреЛ. рд╣реЗ рдиреЛрдЯреЗрд╢рди рдПрдХрд╛ рдлрдВрдХреНрд╢рдирд╕рд╣ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ рдЬреЗ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдЗрдирдкреБрдЯрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╕рд╛рдареА рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛ рдХрд┐рддреА рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬреЗрд╡реНрд╣рд╛ рдореА рдореНрд╣рдгрддреЛ рдХреА "рдпрд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдордордзреНрдпреЗ рдЬрдЯрд┐рд▓рддрд╛ O(some_function()) рдЖрд╣реЗ", рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рд╣реЛрддреЛ рдХреА рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдорд╛рдгрд╛рдд рдбреЗрдЯрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА some_function(a_certain_amount_of_data) рдСрдкрд░реЗрд╢рдиреНрд╕ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд.

рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рд╣реЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдбреЗрдЯрд╛рдЪреЗ рдкреНрд░рдорд╛рдг рдирд╛рд╣реА**, рдЕрдиреНрдпрдерд╛ ** рдбреЗрдЯрд╛ рд╡реНрд╣реЙрд▓реНрдпреВрдо рд╡рд╛рдврд▓реНрдпрд╛рдиреЗ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдХрд╢реА рд╡рд╛рдврддреЗ. рд╡реЗрд│реЗрдЪреА рдЬрдЯрд┐рд▓рддрд╛ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреА рдЕрдЪреВрдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╡реЗрд│реЗрдЪрд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡рдгреНрдпрд╛рдЪрд╛ рдПрдХ рдЪрд╛рдВрдЧрд▓рд╛ рдорд╛рд░реНрдЧ рдЖрд╣реЗ.

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рдпрд╛ рдЖрд▓реЗрдЦрд╛рдордзреНрдпреЗ рддреБрдореНрд╣реА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЯрд╛рдЗрдо рдХреНрд▓рд┐рд╖реНрдЯрддреЗрд╕рд╛рдареА рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛рдЪреА рд╕рдВрдЦреНрдпрд╛ рдЖрдгрд┐ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдкрд╛рд╣реВ рд╢рдХрддрд╛. рдореА рддреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рд╕реНрдХреЗрд▓ рд╡рд╛рдкрд░рд▓реЗ. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдбреЗрдЯрд╛рдЪреЗ рдкреНрд░рдорд╛рдг 1 рддреЗ 1 рдЕрдмреНрдЬ рдкрд░реНрдпрдВрдд рд╡реЗрдЧрд╛рдиреЗ рд╡рд╛рдврддреЗ. рдЖрдкрдг рддреЗ рдкрд╛рд╣реВ рд╢рдХрддреЛ:

  • O(1) рдХрд┐рдВрд╡рд╛ рд╕реНрдерд┐рд░ рдЬрдЯрд┐рд▓рддрд╛ рд╕реНрдерд┐рд░ рд░рд╛рд╣рддреЗ (рдЕрдиреНрдпрдерд╛ рддреНрдпрд╛рд▓рд╛ рд╕реНрдерд┐рд░ рдЬрдЯрд┐рд▓рддрд╛ рдореНрд╣рдЯрд▓реЗ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА).
  • O(рд▓реЙрдЧ рдЗрди(n)) рдХреЛрдЯреНрдпрд╡рдзреА рдбреЗрдЯрд╛ рдЕрд╕реВрдирд╣реА рдХрдореА рд░рд╛рд╣рддреЗ.
  • рд╕рд░реНрд╡рд╛рдд рд╡рд╛рдИрдЯ рдЕрдбрдЪрдг - O(n2), рдЬреЗрдереЗ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рд╡реЗрдЧрд╛рдиреЗ рд╡рд╛рдврддреЗ.
  • рдЗрддрд░ рджреЛрди рдЧреБрдВрддрд╛рдЧреБрдВрдд рддрд┐рддрдХреНрдпрд╛рдЪ рд▓рд╡рдХрд░ рд╡рд╛рдврддрд╛рдд.

рдЙрджрд╛рд╣рд░рдгреЗ

рдереЛрдбреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдбреЗрдЯрд╛рд╕рд╣, O(1) рдЖрдгрд┐ O(n2) рдордзреАрд▓ рдлрд░рдХ рдирдЧрдгреНрдп рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рдордЬрд╛ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдПрдХ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрд╣реЗ рдЬреНрдпрд╛рд▓рд╛ 2000 рдШрдЯрдХрд╛рдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ.

  • O(1) рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рддреБрдореНрд╣рд╛рд▓рд╛ 1 рдСрдкрд░реЗрд╢рди рдЦрд░реНрдЪ рдХрд░реЗрд▓
  • O(log(n)) рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рддреБрдореНрд╣рд╛рд▓рд╛ 7 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЦрд░реНрдЪ рдХрд░реЗрд▓
  • O(n) рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рддреБрдореНрд╣рд╛рд▓рд╛ 2 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЦрд░реНрдЪ рдХрд░реЗрд▓
  • O(n*log(n)) рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рддреБрдореНрд╣рд╛рд▓рд╛ 14 рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА рдЦрд░реНрдЪ рдХрд░реЗрд▓
  • O(n2) рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ 4 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЦрд░реНрдЪ рд╣реЛрддреАрд▓

O(1) рдЖрдгрд┐ O(n2) рдордзреАрд▓ рдлрд░рдХ рдореЛрдард╛ рд╡рд╛рдЯрддреЛ (4 рджрд╢рд▓рдХреНрд╖ рдСрдкрд░реЗрд╢рдиреНрд╕) рдкрд░рдВрддреБ рддреБрдореНрд╣реА рдЬрд╛рд╕реНрддреАрдд рдЬрд╛рд╕реНрдд 2 ms рдЧрдорд╛рд╡рд╛рд▓, рдлрдХреНрдд рддреБрдордЪреЗ рдбреЛрд│реЗ рдорд┐рдЪрдХрд╛рд╡рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд╣реЗ. рдЦрд░рдВрдЪ, рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реВ рд╢рдХрддрд╛рдд рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рд╢реЗрдХрдбреЛ рд▓рд╛рдЦреЛ рдСрдкрд░реЗрд╢рдиреНрд╕. рдореНрд╣рдгреВрдирдЪ рдЕрдиреЗрдХ рдЖрдпрдЯреА рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдЖрдгрд┐ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╣реА рд╕рдорд╕реНрдпрд╛ рдирд╛рд╣реА.

рдореА рдореНрд╣рдЯрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдкреНрд░рдЪрдВрдб рдкреНрд░рдорд╛рдгрд╛рдд рдбреЗрдЯрд╛рд╕рд╣ рдХрд╛рдо рдХрд░рддрд╛рдирд╛ рд╣реА рд╕рдВрдХрд▓реНрдкрдирд╛ рдЬрд╛рдгреВрди рдШреЗрдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ. рдпрд╛ рд╡реЗрд│реА рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛ 1 рдШрдЯрдХрд╛рдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рд╛рдпрдЪреА рдЕрд╕рд▓реНрдпрд╛рд╕ (рдЬреЗ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╛рдареА рдЬрд╛рд╕реНрдд рдирд╛рд╣реА):

  • O(1) рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рддреБрдореНрд╣рд╛рд▓рд╛ 1 рдСрдкрд░реЗрд╢рди рдЦрд░реНрдЪ рдХрд░реЗрд▓
  • O(log(n)) рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рддреБрдореНрд╣рд╛рд▓рд╛ 14 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЦрд░реНрдЪ рдХрд░реЗрд▓
  • O(n) рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ 1 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЦрд░реНрдЪ рд╣реЛрддреАрд▓
  • O(n*log(n)) рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рддреБрдореНрд╣рд╛рд▓рд╛ 14 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЦрд░реНрдЪ рдХрд░реЗрд▓
  • O(n2) рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рддреБрдореНрд╣рд╛рд▓рд╛ 1 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЦрд░реНрдЪ рдХрд░реЗрд▓

рдореА рдЧрдгрд┐рдд рдХреЗрд▓реЗ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдореА рдореНрд╣рдгреЗрди рдХреА O(n2) рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд╕рд╣ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдХреЙрдлреА рдкрд┐рдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд╣реЗ (рдЕрдЧрджреА рджреЛрди!). рддреБрдореНрд╣реА рдбреЗрдЯрд╛ рд╡реНрд╣реЙрд▓реНрдпреВрдордордзреНрдпреЗ рдЖрдгрдЦреА 0 рдЬреЛрдбрд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдЭреЛрдкрд╛рдпрд▓рд╛ рд╡реЗрд│ рдорд┐рд│реЗрд▓.

рдЪрд▓рд╛ рдЕрдЬреВрди рдЦреЛрд▓рд╛рдд рдЬрд╛рдКрдпрд╛

рд╕рдВрджрд░реНрднрд╛рд╕рд╛рдареА:

  • рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рд╣реЕрд╢ рдЯреЗрдмрд▓ рд▓реБрдХрдЕрдкрд▓рд╛ O(1) рдордзреНрдпреЗ рдПрдХ рдШрдЯрдХ рд╕рд╛рдкрдбрддреЛ.
  • рд╕реБ-рд╕рдВрддреБрд▓рд┐рдд рдЭрд╛рдб рд╢реЛрдзрд▓реНрдпрд╛рдиреЗ O(log(n)) рдордзреНрдпреЗ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЛ.
  • рдЕреЕрд░реЗ рд╢реЛрдзрд▓реНрдпрд╛рдиреЗ O(n) рдордзреНрдпреЗ рдкрд░рд┐рдгрд╛рдо рдорд┐рд│рддрд╛рдд.
  • рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд░реНрдЧреАрдХрд░рдг рдЕрд▓реНрдЧреЛрд░рд┐рджрдордордзреНрдпреЗ рдЬрдЯрд┐рд▓рддрд╛ O(n*log(n)) рдЕрд╕рддреЗ.
  • рдЦрд░рд╛рдм рдХреНрд░рдорд╡рд╛рд░реА рдЕрд▓реНрдЧреЛрд░рд┐рджрдордордзреНрдпреЗ рдЬрдЯрд┐рд▓рддрд╛ O(n2) рдЕрд╕рддреЗ.

рдЯреАрдк: рдкреБрдвреАрд▓ рднрд╛рдЧрд╛рдд рдЖрдкрдг рд╣реЗ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдкрд╛рд╣реВ.

рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд╡реЗрд│ рдЬрдЯрд┐рд▓рддреЗрдЪреЗ рдЕрдиреЗрдХ рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗрдд:

  • рд╕рд░рд╛рд╕рд░реА рдХреЗрд╕ рдкрд░рд┐рд╕реНрдерд┐рддреА
  • рд╕рд░реНрд╡реЛрддреНрддрдо рдХреЗрд╕ рдкрд░рд┐рд╕реНрдерд┐рддреА
  • рдЖрдгрд┐ рд╕рд░реНрд╡рд╛рдд рд╡рд╛рдИрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреА

рд╡реЗрд│реЗрдЪреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реА рдмрд░реНрдпрд╛рдЪрджрд╛ рд╕рд░реНрд╡рд╛рдд рд╡рд╛рдИрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреА рдЕрд╕рддреЗ.

рдореА рдлрдХреНрдд рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреНрдпрд╛ рд╡реЗрд│реЗрдЪреНрдпрд╛ рдЬрдЯрд┐рд▓рддреЗрдмрджреНрджрд▓ рдмреЛрд▓рдд рд╣реЛрддреЛ, рдкрд░рдВрддреБ рдЬрдЯрд┐рд▓рддрд╛ рдпрд╛рд╡рд░ рджреЗрдЦреАрд▓ рд▓рд╛рдЧреВ рд╣реЛрддреЗ:

  • рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪрд╛ рдореЗрдорд░реА рд╡рд╛рдкрд░
  • рдбрд┐рд╕реНрдХ I/O рдЙрдкрднреЛрдЧ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо

рдЕрд░реНрдерд╛рдд, n2 рдкреЗрдХреНрд╖рд╛ рд╡рд╛рдИрдЯ рдЧреБрдВрддрд╛рдЧреБрдВрдд рдЖрд╣реЗрдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

  • n4: рд╣реЗ рднрдпрдВрдХрд░ рдЖрд╣реЗ! рдирдореВрдж рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХрд╛рд╣реА рдЕрд▓реНрдЧреЛрд░рд┐рджрдордордзреНрдпреЗ рд╣реА рдЬрдЯрд┐рд▓рддрд╛ рдЖрд╣реЗ.
  • 3n: рд╣реЗ рдЖрдгрдЦреА рд╡рд╛рдИрдЯ рдЖрд╣реЗ! рдпрд╛ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рдордзреНрдпрднрд╛рдЧреА рдЖрдкрдг рдкрд╛рд╣рдгрд╛рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдордкреИрдХреА рдПрдХ рд╣реА рдЬрдЯрд┐рд▓рддрд╛ рдЖрд╣реЗ (рдЖрдгрд┐ рддреЗ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдЕрдиреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ).
  • рдлреЕрдХреНрдЯреЛрд░рд┐рдпрд▓ n: рдЕрдЧрджреА рдереЛрдбреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдбреЗрдЯрд╛ рдЕрд╕рддрд╛рдирд╛рд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреЗ рдкрд░рд┐рдгрд╛рдо рдХрдзреАрд╣реА рдорд┐рд│рдгрд╛рд░ рдирд╛рд╣реАрдд.
  • nn: рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реА рдЬрдЯрд┐рд▓рддрд╛ рдЖрд▓реА, рддрд░ рддреБрдореНрд╣реА рд╕реНрд╡рддрдГрд▓рд╛ рд╡рд┐рдЪрд╛рд░рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА рд╣реЗ рдЦрд░реЛрдЦрд░ рддреБрдордЪреЗ рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдк рдЖрд╣реЗ рдХрд╛...

рдЯреАрдк: рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдореЛрдареНрдпрд╛ O рдкрджрдирд╛рдорд╛рдЪреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рджрд┐рд▓реЗрд▓реА рдирд╛рд╣реА, рдлрдХреНрдд рдПрдХ рдХрд▓реНрдкрдирд╛ рдЖрд╣реЗ. рддреБрдореНрд╣реА рд╣рд╛ рд▓реЗрдЦ рдпреЗрдереЗ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ (рдЕрд╕рд┐рдореНрдкреНрдЯреЛрдЯрд┐рдХ) рд╡реНрдпрд╛рдЦреНрдпреЗрд╕рд╛рдареА.

рд╡рд┐рд▓реАрди рдХрд░рд╛

рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕рдВрдЧреНрд░рд╣ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ рддреЗрд╡реНрд╣рд╛ рдЖрдкрдг рдХрд╛рдп рдХрд░рддрд╛? рдХрд╛рдп? рддреБрдореНрд╣реА sort() рдлрдВрдХреНрд╢рдирд▓рд╛ рдХреЙрд▓ рдХрд░рд╛... рдареАрдХ рдЖрд╣реЗ, рдЪрд╛рдВрдЧрд▓реЗ рдЙрддреНрддрд░... рдкрдг рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ sort() рдлрдВрдХреНрд╢рди рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рд╕рдордЬрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.

рдЕрдиреЗрдХ рдЪрд╛рдВрдЧрд▓реЗ рд╡рд░реНрдЧреАрдХрд░рдг рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрд╣реЗрдд, рдореНрд╣рдгреВрди рдореА рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрд╡рд╛рдЪреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдВрд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрди: рдХреНрд░рдорд╡рд╛рд░реА рд╡рд┐рд▓реАрди рдХрд░рд╛. рдбреЗрдЯрд╛рдЪреА рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреЗ рдЖрддреНрддрд╛ рдХрд╛ рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрджрд╛рдЪрд┐рдд рд╕рдордЬрдд рдирд╕реЗрд▓, рдкрд░рдВрддреБ рддреБрдореНрд╣реА рдХреНрд╡реЗрд░реА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рднрд╛рдЧрд╛рдирдВрддрд░ рд╣реЗ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рд╢рд┐рд╡рд╛рдп, рд╡рд┐рд▓реАрдиреАрдХрд░рдгрд╛рдЪреА рдХреНрд░рдорд╡рд╛рд░реА рд╕рдордЬреВрди рдШреЗрдгреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдирдВрддрд░ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдЬреЙрдИрди рдСрдкрд░реЗрд╢рди рдореНрд╣рдгрддрд╛рдд рд╣реЗ рд╕рдордЬрдгреНрдпрд╛рд╕ рдорджрдд рдХрд░реЗрд▓ рдЬрд╛ рд╕рд╛рдореАрд▓ рд╡реНрд╣рд╛ (рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдЕрд╕реЛрд╕рд┐рдПрд╢рди).

рд╡рд┐рд▓реАрди

рдЕрдиреЗрдХ рдЙрдкрдпреБрдХреНрдд рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдкреНрд░рдорд╛рдгреЗ, рдорд░реНрдЬ рд╕реЙрд░реНрдЯ рдПрдХрд╛ рдпреБрдХреНрддреАрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ: N/2 рдЖрдХрд╛рд░рд╛рдЪреНрдпрд╛ 2 рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд▓реЗрд▓реНрдпрд╛ рдЕреЕрд░реЗрд▓рд╛ N-рдШрдЯрдХ рдХреНрд░рдорд╡рд╛рд░реА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЕреЕрд░реЗрдордзреНрдпреЗ рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реНрдпрд╛рдиреЗ рдлрдХреНрдд N рдСрдкрд░реЗрд╢рдиреНрд╕ рдЦрд░реНрдЪ рд╣реЛрддрд╛рдд. рдпрд╛ рдСрдкрд░реЗрд╢рдирд▓рд╛ рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдореНрд╣рдгрддрд╛рдд.

рдпрд╛рдЪрд╛ рдЕрд░реНрде рдХрд╛рдп рддреЗ рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдиреЗ рдкрд╛рд╣реВ рдпрд╛:

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рд╣реА рдЖрдХреГрддреА рджрд░реНрд╢рд╡рддреЗ рдХреА рдЕрдВрддрд┐рдо рдХреНрд░рдорд╡рд╛рд░реАрдд 8-рдШрдЯрдХ рдЕреЕрд░реЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ 2 4-рдШрдЯрдХ рдЕреЕрд░реЗрд╡рд░ рдПрдХрджрд╛рдЪ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓. рджреЛрдиреНрд╣реА 4-рдШрдЯрдХ рдЕреЕрд░реЗ рдЖрдзреАрдЪ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд▓реЗрд▓реЗ рдЕрд╕рд▓реНрдпрд╛рдиреЗ:

  • рез) рддреБрдореНрд╣реА рджреЛрди рдЕтАНреЕрд░реЗрдордзреАрд▓ рджреЛрдиреНрд╣реА рд╡рд░реНрддрдорд╛рди рдШрдЯрдХрд╛рдВрдЪреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ (рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рд╡рд░реНрддрдорд╛рди = рдкреНрд░рдердо)
  • 2) рдирдВрддрд░ 8 рдШрдЯрдХ рдЕреЕрд░реЗрдордзреНрдпреЗ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рд▓рд╣рд╛рди рдШреНрдпрд╛
  • 3) рдЖрдгрд┐ рдЕреЕрд░реЗрдордзреАрд▓ рдкреБрдвреАрд▓ рдШрдЯрдХрд╛рдХрдбреЗ рдЬрд╛ рдЬрд┐рдереЗ рддреБрдореНрд╣реА рд╕рд░реНрд╡рд╛рдд рд▓рд╣рд╛рди рдШрдЯрдХ рдШреЗрддрд▓рд╛
  • рдЖрдгрд┐ 1,2,3 рдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рд╛ рдЬреЛрдкрд░реНрдпрдВрдд рддреБрдореНрд╣реА рдЕреЕрд░реЗрдЪреНрдпрд╛ рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рдШрдЯрдХрд╛рдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪрдд рдирд╛рд╣реА.
  • рдирдВрддрд░ рддреБрдореНрд╣реА рдЗрддрд░ рдЕреЕрд░реЗрдЪреЗ рдЙрд░реНрд╡рд░рд┐рдд рдШрдЯрдХ 8 рдШрдЯрдХ рдЕреЕрд░реЗрдордзреНрдпреЗ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдШреНрдпрд╛.

рд╣реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдХрд╛рд░рдг рджреЛрдиреНрд╣реА 4-рдШрдЯрдХ рдЕреЕрд░реЗ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд▓реЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛ рдЕреЕрд░реЗрдордзреНрдпреЗ "рдкрд░рдд рдЬрд╛рд╡реЗ" рд▓рд╛рдЧрдд рдирд╛рд╣реА.

рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдпреБрдХреНрддреА рд╕рдордЬрд▓реА рдЖрд╣реЗ, рд╡рд┐рд▓реАрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдорд╛рдЭрд╛ рд╕реНрдпреВрдбреЛрдХреЛрдб рдпреЗрдереЗ рдЖрд╣реЗ:

array mergeSort(array a)
   if(length(a)==1)
      return a[0];
   end if

   //recursive calls
   [left_array right_array] := split_into_2_equally_sized_arrays(a);
   array new_left_array := mergeSort(left_array);
   array new_right_array := mergeSort(right_array);

   //merging the 2 small ordered arrays into a big one
   array result := merge(new_left_array,new_right_array);
   return result;

рдорд░реНрдЬ рд╕реЙрд░реНрдЯ рд╕рдорд╕реНрдпрд╛ рдЫреЛрдЯреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдордзреНрдпреЗ рдореЛрдбрддреЗ рдЖрдгрд┐ рдирдВрддрд░ рдореВрд│ рд╕рдорд╕реНрдпреЗрдЪреЗ рдкрд░рд┐рдгрд╛рдо рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд▓рд╣рд╛рди рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдкрд░рд┐рдгрд╛рдо рд╢реЛрдзрддреЗ (рдЯреАрдк: рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдЖрдгрд┐ рд╡рд┐рдЬрдп рдореНрд╣рдгрддрд╛рдд). рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рдордЬрдд рдирд╕реЗрд▓, рддрд░ рдХрд╛рд│рдЬреА рдХрд░реВ рдирдХрд╛; рдкрд╣рд┐рд▓реНрдпрд╛рдВрджрд╛ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рд╡рд░ рдорд▓рд╛ рд╕рдордЬрд▓реЗ рдирд╛рд╣реА. рдЬрд░ рддреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдорджрдд рдХрд░реВ рд╢рдХрдд рдЕрд╕реЗрд▓, рддрд░ рдореА рд╣рд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рджреЛрди-рдЪрд░рдг рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдореНрд╣рдгреВрди рдкрд╛рд╣рддреЛ:

  • рдбрд┐рд╡реНрд╣рд┐рдЬрди рдлреЗрдЬ, рдЬреЗрдереЗ рдЕреЕрд░реЗ рд▓рд╣рд╛рди рдЕреЕрд░реЗрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗрд▓рд╛ рдЖрд╣реЗ
  • рдХреНрд░рдорд╡рд╛рд░реАрдЪрд╛ рдЯрдкреНрдкрд╛ рд╣рд╛ рдЖрд╣реЗ рдЬреЗрдереЗ рд▓рд╣рд╛рди рдЕреЕрд░реЗ рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд (рдпреБрдирд┐рдпрди рд╡рд╛рдкрд░реВрди) рдПрдХ рдореЛрдард╛ рдЕреЕрд░реЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

рд╡рд┐рднрд╛рдЧрдгреА рдЯрдкреНрдкрд╛

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рдбрд┐рд╡реНрд╣рд┐рдЬрди рд╕реНрдЯреЗрдЬрдордзреНрдпреЗ, рдЕреЕрд░реЗ 3 рдЪрд░рдгрд╛рдВрдордзреНрдпреЗ рдпреБрдирд┐рдЯрд░реА рдЕреЕрд░реЗрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реА рдЬрд╛рддреЗ. рдкрд╛рдпрд▒реНрдпрд╛рдВрдЪреА рдФрдкрдЪрд╛рд░рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рд▓реЙрдЧ(N) рдЖрд╣реЗ (N=8 рдкрд╛рд╕реВрди, log(N) = 3).

рд╣реЗ рдорд▓рд╛ рдХрд╕реЗ рдХрд│реЗрд▓?

рдореА рд╣реБрд╢рд╛рд░ рдЖрд╣реЗ! рдПрдХрд╛ рд╢рдмреНрджрд╛рдд - рдЧрдгрд┐рдд. рдХрд▓реНрдкрдирд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рдпрд░реА рдореВрд│ рдЕреЕрд░реЗрдЪреНрдпрд╛ рдЖрдХрд╛рд░рд╛рд▓рд╛ 2 рдиреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ. рдкрд╛рдпрд▒реНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдореНрд╣рдгрдЬреЗ рддреБрдореНрд╣реА рдореВрд│ рдЕреЕрд░реЗрд▓рд╛ рджреЛрди рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рдХрд┐рддреА рд╡реЗрд│рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реВ рд╢рдХрддрд╛. рд╣реА рд▓реЙрдЧрд░рд┐рдердордЪреА рдЕрдЪреВрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЖрд╣реЗ (рдмреЗрд╕ 2).

рдХреНрд░рдорд╡рд╛рд░реАрдЪрд╛ рдЯрдкреНрдкрд╛

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рдХреНрд░рдорд╡рд╛рд░реАрдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рдд, рддреБрдореНрд╣реА рдПрдХрд╛рддреНрдордХ (рдПрдХрд▓-рдШрдЯрдХ) рдЕреЕрд░реЗрд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░рд╛рд▓. рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдгрд╛рджрд░рдореНрдпрд╛рди рддреБрдореНрд╣реА рдПрдХрд╛рдзрд┐рдХ рдорд░реНрдЬ рдСрдкрд░реЗрд╢рдиреНрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рдЖрдгрд┐ рдПрдХреВрдг рдХрд┐рдВрдордд N = 8 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЖрд╣реЗ:

  • рдкрд╣рд┐рд▓реНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рдд рддреБрдордЪреНрдпрд╛рдХрдбреЗ 4 рд╡рд┐рд▓реАрдиреАрдХрд░рдгреЗ рдЖрд╣реЗрдд рдЬреНрдпрд╛рдВрдЪреА рдХрд┐рдВрдордд рдкреНрд░рддреНрдпреЗрдХреА 2 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЖрд╣реЗ
  • рджреБрд╕рд░реНтАНрдпрд╛ рдЪрд░рдгрд╛рдд рддреБрдордЪреНрдпрд╛рдХрдбреЗ 2 рд╡рд┐рд▓реАрдиреАрдХрд░рдгреЗ рдЖрд╣реЗрдд рдЬреНрдпрд╛рдВрдЪреА рдХрд┐рдВрдордд рдкреНрд░рддреНрдпреЗрдХреА 4 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЖрд╣реЗ
  • рддрд┐рд╕рд▒реНрдпрд╛ рдЪрд░рдгрд╛рдд рддреБрдордЪреНрдпрд╛рдХрдбреЗ 1 рдорд░реНрдЬ рдЖрд╣реЗ рдЬреНрдпрд╛рдЪреА рдХрд┐рдВрдордд 8 рдСрдкрд░реЗрд╢рдиреНрд╕ рдЖрд╣реЗ

рд▓реЙрдЧ(рдПрди) рдкрд╛рдпрд▒реНрдпрд╛ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдПрдХреВрдг рдЦрд░реНрдЪ рдПрди * log(N) рдСрдкрд░реЗрд╢рдиреНрд╕.

рдорд░реНрдЬ рдХреНрд░рдорд╡рд╛рд░реАрдЪреЗ рдлрд╛рдпрджреЗ

рд╣реЗ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЗрддрдХреЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХрд╛ рдЖрд╣реЗ?

рдХрд╛рд░рдг:

  • рддреБрдореНрд╣реА рдореЗрдорд░реА рдлреВрдЯрдкреНрд░рд┐рдВрдЯ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рдмрджрд▓реВ рд╢рдХрддрд╛ рдЬреЗрдгреЗрдХрд░реВрди рддреБрдореНрд╣реА рдирд╡реАрди рдЕреЕрд░реЗ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА рдкрд░рдВрддреБ рдереЗрдЯ рдЗрдирдкреБрдЯ рдЕреЕрд░реЗрдордзреНрдпреЗ рдмрджрд▓ рдХрд░реВ рд╢рдХрддрд╛.

рдЯреАрдк: рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛ рдореНрд╣рдгрддрд╛рдд in-рд╕реНрдерд╛рди (рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдорд░реАрд╢рд┐рд╡рд╛рдп рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреЗ).

  • рддреБрдореНрд╣реА рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЖрдгрд┐ рдереЛрдбреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдореЗрдорд░реА рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рдЪ рд╡реЗрд│реА рд▓рдХреНрд╖рдгреАрдп рдбрд┐рд╕реНрдХ I/O рдУрд╡реНрд╣рд░рд╣реЗрдб рди рдШреЗрддрд╛ рдмрджрд▓реВ рд╢рдХрддрд╛. рдореЗрдорд░реАрдордзреНрдпреЗ рдлрдХреНрдд рддреЗрдЪ рднрд╛рдЧ рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрд╣реЗ рдЬреНрдпрд╛рд╡рд░ рд╕рдзреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реА рдЬрд╛рдд рдЖрд╣реЗ. рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЗрд╡рд│ 100-рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдорд░реА рдмрдлрд░рд╕рд╣ рдорд▓реНрдЯреА-рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдЯреЗрдмрд▓рдЪреА рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд╛рдпрдЪреА рдЕрд╕рддреЗ рддреЗрд╡реНрд╣рд╛ рд╣реЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЕрд╕рддреЗ.

рдЯреАрдк: рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛ рдореНрд╣рдгрддрд╛рдд рдмрд╛рд╣реНрдп рдХреНрд░рдорд╡рд╛рд░реА.

  • рддреБрдореНрд╣реА рддреЗ рдПрдХрд╛рдзрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛/рдереНрд░реЗрдбреНрд╕/рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдмрджрд▓реВ рд╢рдХрддрд╛.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд┐рддрд░рд┐рдд рд╡рд┐рд▓реАрдиреАрдХрд░рдг рдХреНрд░рдорд╡рд╛рд░реА рдореБрдЦреНрдп рдШрдЯрдХрд╛рдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ рд╣рдбреЛрдк (рдЬреА рдмрд┐рдЧ рдбреЗрдЯрд╛ рдордзреНрдпреЗ рдПрдХ рд░рдЪрдирд╛ рдЖрд╣реЗ).

  • рд╣рд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рд╢рд┐рд╕реЗ рд╕реЛрдиреНрдпрд╛рдд рдмрджрд▓реВ рд╢рдХрддреЛ (рдЦрд░реЛрдЦрд░!).

рд╣реЗ рдХреНрд░рдорд╡рд╛рд░реА рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдмрд╣реБрддреЗрдХ (рд╕рд░реНрд╡ рдирд╕рд▓реНрдпрд╛рд╕) рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ, рдкрд░рдВрддреБ рддреЗ рдПрдХрдореЗрд╡ рдирд╛рд╣реА. рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рд╣реЗ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рд╕рдВрд╢реЛрдзрди рдХрд╛рд░реНрдп, рдЬреЗ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд░рдорд╡рд╛рд░реА рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреНрдпрд╛ рд╕рд╛рдзрдХ рдЖрдгрд┐ рдмрд╛рдзрдХрд╛рдВрдЪреА рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ.

рдЕреЕрд░реЗ, рдЯреНрд░реА рдЖрдгрд┐ рд╣реЕрд╢ рдЯреЗрдмрд▓

рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рд╡реЗрд│реЗрдЪреА рдЬрдЯрд┐рд▓рддрд╛ рдЖрдгрд┐ рд╡рд░реНрдЧреАрдХрд░рдгрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рд╕рдордЬрд▓реА рдЖрд╣реЗ, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ 3 рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕рдмрджреНрджрд▓ рд╕рд╛рдВрдЧреВ. рд╣реЗ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ рдХрд╛рд░рдг рддреЗ рдЖрдзреБрдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕рдЪрд╛ рдЖрдзрд╛рд░ рдЖрд╣реЗрдд. рдореА рд╣реА рд╕рдВрдХрд▓реНрдкрдирд╛ рдорд╛рдВрдбрдгрд╛рд░ рдЖрд╣реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ.

рд░рдЪрдирд╛

рджреНрд╡рд┐рдорд┐рддреАрдп рдЕреЕрд░реЗ рд╣реА рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреА рдбреЗрдЯрд╛ рд░рдЪрдирд╛ рдЖрд╣реЗ. рд╕рд╛рд░рдгреАрдЪрд╛ рдЕреЕрд░реЗ рдореНрд╣рдгреВрди рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рд╣рд╛ рджреНрд╡рд┐рдорд┐рддреАрдп рдЕреЕрд░реЗ рдкрдВрдХреНрддреА рдЖрдгрд┐ рд╕реНрддрдВрднрд╛рдВрд╕рд╣ рдПрдХ рд╕рд╛рд░рдгреА рдЖрд╣реЗ:

  • рдкреНрд░рддреНрдпреЗрдХ рдУрд│ рдПрдХ рдЕрд╕реНрддрд┐рддреНрд╡ рджрд░реНрд╢рд╡рддреЗ
  • рд╕реНрддрдВрдн рдЧреБрдгрдзрд░реНрдо рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддрд╛рдд рдЬреЗ рдШрдЯрдХрд╛рдЪреЗ рд╡рд░реНрдгрди рдХрд░рддрд╛рдд.
  • рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдВрдн рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░рд╛рдЪрд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЛ (рдкреВрд░реНрдгрд╛рдВрдХ, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рддрд╛рд░реАрдЦ...).

рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рджреГрд╢реНрдпрдорд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рд╕реЛрдпреАрд╕реНрдХрд░ рдЖрд╣реЗ, рддрдерд╛рдкрд┐, рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ рддреЗрд╡реНрд╣рд╛ рд╣реЗ рдпреЛрдЧреНрдп рдирд╛рд╣реА.

рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдпреВрдХреЗрдордзреНрдпреЗ рдХрд╛рдо рдХрд░рдгрд╛рд░реА рд╕рд░реНрд╡ рдореБрд▓реЗ рд╢реЛрдзрд╛рдпрдЪреА рдЕрд╕рддреАрд▓, рддрд░ рддреА рдкрдВрдХреНрддреА рдпреВрдХреЗрдЪреА рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддреА рдкрд╛рд╣рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдПрди рд╡реНрдпрд╡рд╣рд╛рд░ рдЦрд░реНрдЪ рд╣реЛрддреАрд▓рдХреБрдареЗ N - рдУрд│реАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛, рдЬреА рд╡рд╛рдИрдЯ рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╡реЗрдЧрд╡рд╛рди рдорд╛рд░реНрдЧ рдЕрд╕реВ рд╢рдХрддреЛ рдХрд╛? рдЖрддрд╛ рдЭрд╛рдбрд╛рдВрд╢реА рдУрд│рдЦ рдХрд░реВрди рдШреЗрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ.

рдЯреАрдк: рдмрд╣реБрддреЗрдХ рдЖрдзреБрдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреЗрдмрд▓реНрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдиреЗ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЕреЕрд░реЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд: рд╣реАрдк-рдСрд░реНрдЧрдирд╛рдЗрдЬреНрдб рдЯреЗрдмрд▓реНрд╕ рдЖрдгрд┐ рдЗрдВрдбреЗрдХреНрд╕-рдСрд░реНрдЧрдирд╛рдЗрдЬреНрдб рдЯреЗрдмрд▓реНрд╕. рдкрд░рдВрддреБ рдпрд╛рдореБрд│реЗ рд╕реНрддрдВрднрд╛рдВрдЪреНрдпрд╛ рдЧрдЯрд╛рдордзреНрдпреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддреА рд╢реЛрдзрдгреНрдпрд╛рдЪреА рд╕рдорд╕реНрдпрд╛ рдмрджрд▓рдд рдирд╛рд╣реА.

рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреНрд░реА рдЖрдгрд┐ рдЗрдВрдбреЗрдХреНрд╕

рдмрд╛рдпрдирд░реА рд╕рд░реНрдЪ рдЯреНрд░реА рд╣реЗ рд╡рд┐рд╢реЗрд╖ рдЧреБрдгрдзрд░реНрдо рдЕрд╕рд▓реЗрд▓реЗ рдмрд╛рдпрдирд░реА рдЯреНрд░реА рдЖрд╣реЗ, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрд╡рд░реАрд▓ рдХреА рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

  • рдбрд╛рд╡реНрдпрд╛ рд╕рдмрдЯреНрд░реАрдордзреНтАНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╕рд░реНрд╡ рдХрд│рд╛рдВрдкреЗрдХреНрд╖рд╛ рдореЛрдареЗ
  • рдЙрдЬрд╡реНрдпрд╛ рд╕рдмрдЯреНрд░реАрдордзреНрдпреЗ рд╕рд╛рдард╡рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдХреА рдкреЗрдХреНрд╖рд╛ рдХрдореА

рдпрд╛рдЪрд╛ рджреГрд╢реНрдп рдЕрд░реНрде рдХрд╛рдп рддреЗ рдкрд╛рд╣реВ рдпрд╛

рдЖрдпрдбрд┐рдпрд╛

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рдпрд╛ рдЭрд╛рдбрд╛рдордзреНрдпреЗ N = 15 рдШрдЯрдХ рдЖрд╣реЗрдд. рд╕рдордЬрд╛ рдореА 208 рд╢реЛрдзрдд рдЖрд╣реЗ:

  • рдореА рд░реВрдЯрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░рддреЛ рдЬреНрдпрд╛рдЪреА рдХреА 136 рдЖрд╣реЗ. 136<208 рдкрд╛рд╕реВрди, рдореА рдиреЛрдб 136 рдЪреНрдпрд╛ рдЙрдЬрд╡реНрдпрд╛ рд╕рдмрдЯреНрд░реАрдХрдбреЗ рдкрд╛рд╣рддреЛ.
  • 398>208 рдореНрд╣рдгреВрди рдореА рдиреЛрдб 398 рдЪреНрдпрд╛ рдбрд╛рд╡реНрдпрд╛ рд╕рдмрдЯреНрд░реАрдХрдбреЗ рдкрд╣рд╛рдд рдЖрд╣реЗ
  • 250>208 рдореНрд╣рдгреВрди рдореА рдиреЛрдб 250 рдЪреНрдпрд╛ рдбрд╛рд╡реНрдпрд╛ рд╕рдмрдЯреНрд░реАрдХрдбреЗ рдкрд╣рд╛рдд рдЖрд╣реЗ
  • 200<208, рдореНрд╣рдгреВрди рдореА рдиреЛрдб 200 рдЪреНрдпрд╛ рдЙрдЬрд╡реНрдпрд╛ рд╕рдмрдЯреНрд░реАрдХрдбреЗ рдкрд╣рд╛рдд рдЖрд╣реЗ. рдкрд░рдВрддреБ 200 рд▓рд╛ рдпреЛрдЧреНрдп рд╕рдмрдЯреНрд░реА рдирд╛рд╣реА, рдореВрд▓реНрдп рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╛рд╣реА (рдХрд╛рд░рдг рддреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреЗ рдпреЛрдЧреНрдп рд╕рдмрдЯреНрд░реА 200 рдордзреНрдпреЗ рдЕрд╕реЗрд▓).

рдЖрддрд╛ рд╕рдордЬрд╛ рдореА 40 рд╢реЛрдзрдд рдЖрд╣реЗ

  • рдореА рд░реВрдЯрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░рддреЛ рдЬреНрдпрд╛рдЪреА рдХреА 136 рдЖрд╣реЗ. 136 > 40 рдкрд╛рд╕реВрди, рдореА рдиреЛрдб 136 рдЪреНрдпрд╛ рдбрд╛рд╡реНрдпрд╛ рд╕рдмрдЯреНрд░реАрдХрдбреЗ рдкрд╛рд╣рддреЛ.
  • 80 > 40, рдореНрд╣рдгреВрди рдореА рдиреЛрдб 80 рдЪреНрдпрд╛ рдбрд╛рд╡реНрдпрд╛ рд╕рдмрдЯреНрд░реАрдХрдбреЗ рдкрд╣рд╛рдд рдЖрд╣реЗ
  • 40 = 40, рдиреЛрдб рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЖрд╣реЗ. рдореА рдиреЛрдбрдордзреАрд▓ рд░реЛ рдЖрдпрдбреА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддреЛ (рдЪрд┐рддреНрд░рд╛рдд рджрд░реНрд╢рд╡рд┐рд▓рд╛ рдирд╛рд╣реА) рдЖрдгрд┐ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдкрдВрдХреНрддреА рдЖрдпрдбреАрд╕рд╛рдареА рдЯреЗрдмрд▓рдордзреНрдпреЗ рдкрд╛рд╣рддреЛ.
  • рдкрдВрдХреНрддреА рдЖрдпрдбреА рдЬрд╛рдгреВрди рдШреЗрддрд▓реНрдпрд╛рдиреЗ рдорд▓рд╛ рдЯреЗрдмрд▓рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдиреЗрдордХрд╛ рдХреБрдареЗ рдЖрд╣реЗ рд╣реЗ рдХрд│реВ рд╢рдХрддреЗ, рддреНрдпрд╛рдореБрд│реЗ рдореА рддреЛ рддреНрд╡рд░рд┐рдд рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реВ рд╢рдХрддреЛ.

рд╕рд░рддреЗрд╢реЗрд╡рдЯреА, рджреЛрдиреНрд╣реА рд╢реЛрдзрд╛рдВрдореБрд│реЗ рдорд▓рд╛ рдЭрд╛рдбрд╛рдЪреНрдпрд╛ рдЖрддреАрд▓ рд╕реНрддрд░рд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдореЛрдЬрд╛рд╡реА рд▓рд╛рдЧреЗрд▓. рдЬрд░ рддреБрдореНрд╣реА рд╡рд┐рд▓реАрдиреАрдХрд░рдгрд╛рдЪреНрдпрд╛ рдХреНрд░рдорд╡рд╛рд░реАрдмрджреНрджрд▓рдЪрд╛ рднрд╛рдЧ рдХрд╛рд│рдЬреАрдкреВрд░реНрд╡рдХ рд╡рд╛рдЪрд▓рд╛рдд, рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд▓реЙрдЧ(N) рд╕реНрддрд░ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рд╣реЗ рдмрд╛рд╣реЗрд░ рд╡рд│рддреЗ, рд╢реЛрдз рдЦрд░реНрдЪ рд▓реЙрдЧ(N), рд╡рд╛рдИрдЯ рдирд╛рд╣реА!

рдЪрд▓рд╛ рдЖрдкрд▓реНрдпрд╛ рд╕рдорд╕реНрдпреЗрдХрдбреЗ рдкрд░рдд рдЬрд╛рдКрдпрд╛

рдкрд░рдВрддреБ рд╣реЗ рдЦреВрдк рдЕрдореВрд░реНрдд рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЖрдкрд▓реНрдпрд╛ рд╕рдорд╕реНрдпреЗрдХрдбреЗ рдкрд░рдд рдЬрд╛рдКрдпрд╛. рд╕рд╛рдзреНрдпрд╛ рдкреВрд░реНрдгрд╛рдВрдХрд╛рдРрд╡рдЬреА, рдорд╛рдЧреАрд▓ рд╕рд╛рд░рдгреАрддреАрд▓ рдПрдЦрд╛рджреНрдпрд╛рдЪреНрдпрд╛ рджреЗрд╢рд╛рдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдгрд╛рд▒реНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧрдЪреА рдХрд▓реНрдкрдирд╛ рдХрд░рд╛. рд╕рдордЬрд╛ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдПрдХ рдЭрд╛рдб рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рдЯреЗрдмрд▓рдЪреЗ "рджреЗрд╢" рдлреАрд▓реНрдб (рд╕реНрддрдВрдн 3) рдЖрд╣реЗ:

  • рдпреВрдХреЗрдордзреНрдпреЗ рдХреЛрдг рдХрд╛рдо рдХрд░рддреЗ рд╣реЗ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕
  • рдЧреНрд░реЗрдЯ рдмреНрд░рд┐рдЯрдирдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдгрд╛рд░рд╛ рдиреЛрдб рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рдЭрд╛рдбрд╛рдХрдбреЗ рдкрд╣рд╛
  • "UKnode" рдордзреНрдпреЗ рддреБрдореНрд╣рд╛рд▓рд╛ UK рдХрд╛рдордЧрд╛рд░рд╛рдВрдЪреНрдпрд╛ рдиреЛрдВрджреАрдВрдЪреЗ рд╕реНрдерд╛рди рд╕рд╛рдкрдбреЗрд▓.

рддреБрдореНрд╣реА рдереЗрдЯ рдЕреЕрд░реЗ рд╡рд╛рдкрд░рд▓реНрдпрд╛рд╕ рдпрд╛ рд╢реЛрдзрд╛рд╕рд╛рдареА N рдСрдкрд░реЗрд╢рдиреНрд╕рдРрд╡рдЬреА рд▓реЙрдЧ(N) рдСрдкрд░реЗрд╢рдиреНрд╕ рдЦрд░реНрдЪ рд╣реЛрддреАрд▓. рдЬреЗ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдорд╛рдВрдбрд▓реЗ рд╣реЛрддреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ.

рддреБрдореНрд╣реА рдлреАрд▓реНрдбрдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЧрдЯрд╛рд╕рд╛рдареА (рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕рдВрдЦреНрдпрд╛, 2 рдУрд│реА, рд╕рдВрдЦреНрдпрд╛ рдЖрдгрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рддрд╛рд░реАрдЦ...) рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдЯреНрд░реА рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛ рдЬреЛрдкрд░реНрдпрдВрдд рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдХреА (рдореНрд╣рдгрдЬреЗ рдлреАрд▓реНрдб рдЧрдЯ) рдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рд░реНрдп рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рддреБрдореНрд╣реА рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддрд╛. рдХрд┐рд▓реНрд▓реАрдВрдордзреНрдпреЗ рдСрд░реНрдбрд░ рдХрд░рд╛ (рдЬреЗ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рдХреЛрдгрддреНрдпрд╛рд╣реА рдореВрд▓рднреВрдд рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╛рдареА рдЖрд╣реЗ).

B+TreeIndex

рд╣реЗ рдЭрд╛рдб рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдкрд░рдВрддреБ рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддреЗ рддреЗрд╡реНрд╣рд╛ рдПрдХ рдореЛрдареА рд╕рдорд╕реНрдпрд╛ рдЕрд╕рддреЗ рджреЛрди рдореВрд▓реНрдпрд╛рдВрдордзреНрдпреЗ рдЕрдиреЗрдХ рдШрдЯрдХ рдорд┐рд│рд╡рд╛. рдпрд╛рд╕рд╛рдареА O(N) рдЦрд░реНрдЪ рдпреЗрдИрд▓ рдХрд╛рд░рдг рддреБрдореНрд╣рд╛рд▓рд╛ рдЭрд╛рдбрд╛рддреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд╣рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЖрдгрд┐ рддреЗ рдпрд╛ рджреЛрди рдореВрд▓реНрдпрд╛рдВрдордзреАрд▓ рдЖрд╣реЗ рдХрд╛ рддреЗ рддрдкрд╛рд╕рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ (рдЙрджрд╛. рдЭрд╛рдбрд╛рдЪреНрдпрд╛ рдСрд░реНрдбрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЯреНрд░реЕрд╡реНрд╣рд░реНрд╕рд▓рд╕рд╣). рд╢рд┐рд╡рд╛рдп, рд╣реЗ рдСрдкрд░реЗрд╢рди рдбрд┐рд╕реНрдХ I/O рдЕрдиреБрдХреВрд▓ рдирд╛рд╣реА рдХрд╛рд░рдг рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рдВрдкреВрд░реНрдг рдЭрд╛рдб рд╡рд╛рдЪрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ рд╢реЛрдзрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рд╢реНрд░реЗрдгреА рд╡рд┐рдирдВрддреА. рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдзреБрдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ B+Tree рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдорд╛рдЧреАрд▓ рдЭрд╛рдбрд╛рдЪреА рд╕реБрдзрд╛рд░рд┐рдд рдЖрд╡реГрддреНрддреА рд╡рд╛рдкрд░рддрд╛рдд. рдмреА + рдЯреНрд░реА рдЭрд╛рдбрд╛рдордзреНрдпреЗ:

  • рдлрдХреНрдд рд╕рд░реНрд╡рд╛рдд рдХрдореА рдиреЛрдбреНрд╕ (рдкрд╛рдиреЗ) рдорд╛рд╣рд┐рддреА рд╕рд╛рдард╡рд╛ (рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рд░рдгреАрддреАрд▓ рдкрдВрдХреНрддреАрдВрдЪреЗ рд╕реНрдерд╛рди)
  • рдЙрд░реНрд╡рд░рд┐рдд рдиреЛрдбреНрд╕ рдпреЗрдереЗ рдЖрд╣реЗрдд рд░рд╛рдЙрдЯрд┐рдВрдЧ рд╕рд╛рдареА рдпреЛрдЧреНрдп рдиреЛрдбрд╡рд░ рд╢реЛрдз рджрд░рдореНрдпрд╛рди.

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рдЬрд╕реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛, рдпреЗрдереЗ рдЕрдзрд┐рдХ рдиреЛрдбреНрд╕ рдЖрд╣реЗрдд (рджреЛрдирджрд╛). рдЦрд░рдВрдЪ, рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдиреЛрдбреНрд╕ рдЖрд╣реЗрдд, "рдирд┐рд░реНрдгрдп рдиреЛрдбреНрд╕", рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдпреЛрдЧреНрдп рдиреЛрдб рд╢реЛрдзрдгреНрдпрд╛рдд рдорджрдд рдХрд░рддреАрд▓ (рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рд░рдгреАрдордзреНрдпреЗ рдкрдВрдХреНрддреАрдВрдЪреЗ рд╕реНрдерд╛рди рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЛ). рдкрд░рдВрддреБ рд╢реЛрдз рдЬрдЯрд┐рд▓рддрд╛ рдЕрдЬреВрдирд╣реА O(log(N)) рдЖрд╣реЗ (рдЖрдгрдЦреА рдПрдХ рд╕реНрддрд░ рдЖрд╣реЗ). рдореЛрдард╛ рдлрд░рдХ рд╣рд╛ рдЖрд╣реЗ рдХреА рдЦрд╛рд▓рдЪреНрдпрд╛ рд╕реНрддрд░рд╛рд╡рд░реАрд▓ рдиреЛрдбреНрд╕ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реНтАНрдпрд╛рдВрд╢реА рдЬреЛрдбрд▓реЗрд▓реЗ рдЕрд╕рддрд╛рдд.

рдпрд╛ B+Tree рд╕рд╣, рдЬрд░ рддреБрдореНрд╣реА 40 рдЖрдгрд┐ 100 рдордзреАрд▓ рдореВрд▓реНрдпреЗ рд╢реЛрдзрдд рдЕрд╕рд╛рд▓ рддрд░:

  • рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд 40 (рдХрд┐рдВрд╡рд╛ 40 рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╕рд▓реНрдпрд╛рд╕ 40 рдирдВрддрд░рдЪреЗ рд╕рд░реНрд╡рд╛рдд рдЬрд╡рд│рдЪреЗ рдореВрд▓реНрдп) рд╢реЛрдзрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬрд╕реЗ рддреБрдореНрд╣реА рдорд╛рдЧреАрд▓ рдЭрд╛рдбрд╛рд╕рд╣ рдХреЗрд▓реЗ рд╣реЛрддреЗ.
  • рдирдВрддрд░ рддреБрдореНрд╣реА 40 рдкрд░реНрдпрдВрдд рдкреЛрд╣реЛрдЪреЗрдкрд░реНрдпрдВрдд рдереЗрдЯ рд╡рд╛рд░рд╕ рд▓рд┐рдВрдХ рд╡рд╛рдкрд░реВрди 100 рд╡рд╛рд░рд╕ рдЧреЛрд│рд╛ рдХрд░рд╛.

рд╕рдордЬрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ M рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╕рд╛рдкрдбрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдЭрд╛рдбрд╛рд▓рд╛ N рдиреЛрдб рдЖрд╣реЗрдд. рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЛрдб рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рдорд╛рдЧреАрд▓ рдЭрд╛рдбрд╛рдкреНрд░рдорд╛рдгреЗ рд▓реЙрдЧ(рдПрди) рдЦрд░реНрдЪ рдпреЗрддреЛ. рдкрд░рдВрддреБ рдПрдХрджрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╛ рдиреЛрдб рдорд┐рд│рд╛рд▓рд╛ рдХреА, рддреБрдореНрд╣рд╛рд▓рд╛ M рдСрдкрд░реЗрд╢рдиреНрд╕рдордзреНрдпреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реНтАНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рд╕рд╣ M рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдорд┐рд│рддреАрд▓. рдпрд╛ рд╢реЛрдзрд╛рд╕рд╛рдареА рдлрдХреНрдд M+log(N) рдЦрд░реНрдЪ рдпреЗрддреЛ рдорд╛рдЧреАрд▓ рдЭрд╛рдбрд╛рд╡рд░реАрд▓ N рдСрдкрд░реЗрд╢рдирдЪреНрдпрд╛ рддреБрд▓рдиреЗрдд рдСрдкрд░реЗрд╢рдиреНрд╕. рд╢рд┐рд╡рд╛рдп, рддреБрдореНрд╣рд╛рд▓рд╛ рдкреВрд░реНрдг рдЯреНрд░реА (рдХреЗрд╡рд│ M+log(N) рдиреЛрдбреНрд╕) рд╡рд╛рдЪрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА, рдореНрд╣рдгрдЬреЗ рдбрд┐рд╕реНрдХрдЪрд╛ рдХрдореА рд╡рд╛рдкрд░. рдЬрд░ M рд▓рд╣рд╛рди рдЕрд╕реЗрд▓ (рдЙрджрд╛. 200 рдкрдВрдХреНрддреА) рдЖрдгрд┐ N рдореЛрдард╛ рдЕрд╕реЗрд▓ (1 рдкрдВрдХреНрддреА), рддрд░ рдореЛрдард╛ рдлрд░рдХ рдЕрд╕реЗрд▓.

рдкрдг рдЗрдереЗ рдирд╡реАрди рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд (рдкреБрдиреНрд╣рд╛!). рддреБрдореНрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдПрдХ рдкрдВрдХреНрддреА рдЬреЛрдбрд▓реНрдпрд╛рд╕ рдХрд┐рдВрд╡рд╛ рд╣рдЯрд╡рд▓реНрдпрд╛рд╕ (рдЖрдгрд┐ рдореНрд╣рдгреВрди рд╕рдВрдмрдВрдзрд┐рдд B+Tree рдЗрдВрдбреЗрдХреНрд╕рдордзреНрдпреЗ):

  • рддреБрдореНрд╣реА B+Tree рдордзреАрд▓ рдиреЛрдбреНрд╕рдордзреНрдпреЗ рдХреНрд░рдорд╡рд╛рд░реА рд░рд╛рдЦрд▓реА рдкрд╛рд╣рд┐рдЬреЗ, рдЕрдиреНрдпрдерд╛ рддреБрдореНрд╣реА рдХреНрд░рдорд╡рд╛рд░реА рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЭрд╛рдбрд╛рдЪреНрдпрд╛ рдЖрдд рдиреЛрдб рд╢реЛрдзреВ рд╢рдХрдгрд╛рд░ рдирд╛рд╣реА.
  • рддреБрдореНрд╣реА B+Tree рдордзреНрдпреЗ рдХрд┐рдорд╛рди рд╕рдВрднрд╛рд╡реНрдп рдкрд╛рддрд│реА рдареЗрд╡рд╛рд╡реНрдпрд╛рдд, рдЕрдиреНрдпрдерд╛ O(log(N)) рд╡реЗрд│реЗрдЪреА рдЬрдЯрд┐рд▓рддрд╛ O(N) рд╣реЛрдИрд▓.

рджреБрд╕-рдпрд╛ рд╢рдмреНрджрд╛рдд, рдмреА+рдЯреНрд░реА рд╕реНрд╡рдпрдВ-рдХреНрд░рдордмрджреНрдз рдЖрдгрд┐ рд╕рдВрддреБрд▓рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╕реБрджреИрд╡рд╛рдиреЗ, рд╣реЗ рд╕реНрдорд╛рд░реНрдЯ рдбрд┐рд▓реАрдЯ рдЖрдгрд┐ рдЗрдиреНрд╕рд░реНрдЯ рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╣ рд╢рдХреНрдп рдЖрд╣реЗ. рдкрд░рдВрддреБ рд╣реЗ рдПрдХрд╛ рдЦрд░реНрдЪрд╛рд╡рд░ рдпреЗрддреЗ: B+ рдЯреНрд░реАрдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрдгрд┐ рд╣рдЯрд╡рдгреЗ O(log(N)) рдЦрд░реНрдЪ. рдореНрд╣рдгреВрдирдЪ рддреБрдордЪреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реАрдВрдиреА рддреЗ рдРрдХрд▓реЗ рдЖрд╣реЗ рдЦреВрдк рдЬрд╛рд╕реНрдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╡рд╛рдкрд░рдгреЗ рд╣реА рдЪрд╛рдВрдЧрд▓реА рдХрд▓реНрдкрдирд╛ рдирд╛рд╣реА. рдЦрд░рдВрдЪ, рддреБрдореНрд╣реА рдЯреЗрдмрд▓рдордзреАрд▓ рдкрдВрдХреНрддреА рдлрд╛рд╕реНрдЯ рдЗрдиреНрд╕рд░реНрдЯ/рдЕрдкрдбреЗрдЯ/рдбрд┐рд▓реАрдЯ рдХрдореА рдХрд░рдд рдЖрд╣рд╛рддрдХрд╛рд░рдг рдбреЗрдЯрд╛рдмреЗрд╕рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдбреЗрдХреНрд╕рд╕рд╛рдареА рдорд╣рд╛рдЧрдбреЗ O(log(N)) рдСрдкрд░реЗрд╢рди рд╡рд╛рдкрд░реВрди рдЯреЗрдмрд▓рдЪреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЕрдкрдбреЗрдЯ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддрд╛рдд. рд╢рд┐рд╡рд╛рдп, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЬреЛрдбрдгреЗ рдореНрд╣рдгрдЬреЗ рдЕрдзрд┐рдХ рдХрд╛рдорд╛рдЪрд╛ рднрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ (рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЬрд╛рдИрд▓).

рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╛рдВрд╕рд╛рдареА, рддреБрдореНрд╣реА рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛рд╡рд░реАрд▓ рд▓реЗрдЦ рдкрд╛рд╣реВ рд╢рдХрддрд╛ B+рдЭрд╛рдб. рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ B+Tree рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг рд╣рд╡реЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рдПрдХ рдирдЬрд░ рдЯрд╛рдХрд╛ рд╣рд╛ рд▓реЗрдЦ ╨╕ рд╣рд╛ рд▓реЗрдЦ рдЖрдШрд╛рдбреАрдЪреНрдпрд╛ MySQL рд╡рд┐рдХрд╕рдХрд╛рдХрдбреВрди. рддреЗ рджреЛрдШреЗрд╣реА InnoDB (MySQL рдЗрдВрдЬрд┐рди) рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╕реЗ рд╣рд╛рддрд╛рд│рддрд╛рдд рдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛рдд.

рдЯреАрдк: рдПрдХрд╛ рд╡рд╛рдЪрдХрд╛рдиреЗ рдорд▓рд╛ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдХреА, рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдореБрд│реЗ, B+ рдЭрд╛рдб рдкреВрд░реНрдгрдкрдгреЗ рд╕рдВрддреБрд▓рд┐рдд рдЕрд╕рд╛рд╡реЗ.

рд╣реЕрд╢рдЯреЗрдмрд▓

рдЖрдордЪреА рд╢реЗрд╡рдЯрдЪреА рдорд╣рддреНрддреНрд╡рд╛рдЪреА рдбреЗрдЯрд╛ рд░рдЪрдирд╛ рд╣реЕрд╢ рдЯреЗрдмрд▓ рдЖрд╣реЗ. рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрд╡рд░реАрдд рдореВрд▓реНрдпреЗ рд╢реЛрдзрд╛рдпрдЪреА рдЕрд╕рддреАрд▓ рддреЗрд╡реНрд╣рд╛ рд╣реЗ рдЦреВрдк рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. рд╢рд┐рд╡рд╛рдп, рд╣реЕрд╢ рдЯреЗрдмрд▓ рд╕рдордЬреВрди рдШреЗрддрд▓реНрдпрд╛рдиреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рд╣реЕрд╢ рдЬреЙрдЗрди рдирд╛рд╡рд╛рдЪреЗ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдЬреЙрдЗрди рдСрдкрд░реЗрд╢рди рд╕рдордЬрдгреНрдпрд╛рд╕ рдорджрдд рд╣реЛрдИрд▓ ( рд╣реЕрд╢ рд╕рд╛рдореАрд▓ рд╡реНрд╣рд╛). рд╣реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕рджреНрд╡рд╛рд░реЗ рдХрд╛рд╣реА рдЕрдВрддрд░реНрдЧрдд рдЧреЛрд╖реНрдЯреА рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ (рдЙрджрд╛. рд▓реЙрдХ рдЯреЗрдмрд▓ рдХрд┐рдВрд╡рд╛ рдмрдлрд░ рдкреВрд▓, рдпрд╛ рджреЛрдиреНрд╣реА рд╕рдВрдХрд▓реНрдкрдирд╛ рдЖрдкрдг рдирдВрддрд░ рдкрд╛рд╣реВ).

рд╣реЕрд╢ рдЯреЗрдмрд▓ рд╣реА рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЖрд╣реЗ рдЬреА рддреНрд╡рд░реАрдд рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд┐рд▓реНрд▓реАрджреНрд╡рд╛рд░реЗ рдШрдЯрдХ рд╢реЛрдзрддреЗ. рд╣реЕрд╢ рдЯреЗрдмрд▓ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

  • рдХреА рдЖрдкрд▓реНрдпрд╛ рдШрдЯрдХрд╛рдВрд╕рд╛рдареА
  • рд╣реЕрд╢ рдлрдВрдХреНрд╢рди рдЪрд╛рд╡реНрдпрд╛ рд╕рд╛рдареА. рд╕рдВрдЧрдгрд┐рдд рдХреА рд╣реЕрд╢ рдШрдЯрдХрд╛рдВрдЪреЗ рд╕реНрдерд╛рди рджреЗрддрд╛рдд (рдореНрд╣рдгрддрд╛рдд рд╡рд┐рднрд╛рдЧ ).
  • рдХреА рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдп. рдПрдХрджрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдпреЛрдЧреНрдп рд╡рд┐рднрд╛рдЧ рд╕рд╛рдкрдбрд▓рд╛ рдХреА, рд╣реА рддреБрд▓рдирд╛ рд╡рд╛рдкрд░реВрди рддреБрдореНрд╣реА рд╡рд┐рднрд╛рдЧрд╛рдордзреНрдпреЗ рд╢реЛрдзрдд рдЕрд╕рд▓реЗрд▓рд╛ рдШрдЯрдХ рд╢реЛрдзрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ.

рд╕рд╛рдзреЗ рдЙрджрд╛рд╣рд░рдг

рдЪрд▓рд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдШреЗрдК:

рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд (рднрд╛рдЧ 1)

рдпрд╛ рд╣реЕрд╢ рдЯреЗрдмрд▓рдордзреНрдпреЗ 10 рд╡рд┐рднрд╛рдЧ рдЖрд╣реЗрдд. рдХрд╛рд░рдг рдореА рдЖрд│рд╢реА рдЖрд╣реЗ, рдореА рдлрдХреНрдд 5 рд╕реЗрдЧрдореЗрдВрдЯрдЪреЗ рдЪрд┐рддреНрд░ рдХрд╛рдврд▓реЗ, рдкрд░рдВрддреБ рдорд▓рд╛ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА рддреБрдореНрд╣реА рд╣реБрд╢рд╛рд░ рдЖрд╣рд╛рдд, рдореНрд╣рдгреВрди рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдЗрддрд░ 5 рд╕реНрд╡рддрдГрдЪ рдЪрд┐рддреНрд░рд┐рдд рдХрд░реВ рджреЗрдИрди. рдореА рдХреАрдЪреЗ рд╣реЕрд╢ рдлрдВрдХреНрд╢рди рдореЛрдбреНрдпреБрд▓реЛ резреж рд╡рд╛рдкрд░рд▓реЗ. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдореА рдШрдЯрдХрд╛рдЪрд╛ рд╡рд┐рднрд╛рдЧ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рдлрдХреНрдд рд╢реЗрд╡рдЯрдЪрд╛ рдЕрдВрдХ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддреЛ:

  • рдЬрд░ рд╢реЗрд╡рдЯрдЪрд╛ рдЕрдВрдХ 0 рдЕрд╕реЗрд▓, рддрд░ рдШрдЯрдХ рд╡рд┐рднрд╛рдЧ 0 рдордзреНрдпреЗ рдпреЗрддреЛ,
  • рдЬрд░ рд╢реЗрд╡рдЯрдЪрд╛ рдЕрдВрдХ 1 рдЕрд╕реЗрд▓, рддрд░ рдШрдЯрдХ рд╡рд┐рднрд╛рдЧ 1 рдордзреНрдпреЗ рдпреЗрддреЛ,
  • рд╢реЗрд╡рдЯрдЪрд╛ рдЕрдВрдХ 2 рдЕрд╕рд▓реНрдпрд╛рд╕, рдШрдЯрдХ рдХреНрд╖реЗрддреНрд░ 2 рдордзреНрдпреЗ рдпреЗрддреЛ,
  • ...

рдореА рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рддреБрд▓рдирд╛ рдХрд╛рд░реНрдп рдлрдХреНрдд рджреЛрди рдкреВрд░реНрдгрд╛рдВрдХрд╛рдВрдордзреАрд▓ рд╕рдорд╛рдирддрд╛ рдЖрд╣реЗ.

рд╕рдордЬрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдШрдЯрдХ 78 рдорд┐рд│рд╡рд╛рдпрдЪрд╛ рдЖрд╣реЗ:

  • рд╣реЕрд╢ рдЯреЗрдмрд▓ 78 рд╕рд╛рдареА рд╣реЕрд╢ рдХреЛрдбрдЪреА рдЧрдгрдирд╛ рдХрд░рддреЗ, рдЬреЗ 8 рдЖрд╣реЗ.
  • рд╣реЕрд╢ рдЯреЗрдмрд▓ рд╕реЗрдЧрдореЗрдВрдЯ 8 рдХрдбреЗ рдкрд╛рд╣рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рд▓рд╛ рд╕рд╛рдкрдбрд▓реЗрд▓рд╛ рдкрд╣рд┐рд▓рд╛ рдШрдЯрдХ 78 рдЖрд╣реЗ.
  • рддреА рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдпрдЯрдо 78 рдкрд░рдд рдХрд░рддреЗ
  • рд╢реЛрдз рдЦрд░реНрдЪ рдлрдХреНрдд 2 рдСрдкрд░реЗрд╢рдиреНрд╕ (рдПрдХ рд╣реЕрд╢ рд╡реНрд╣реЕрд▓реНрдпреВ рдореЛрдЬрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рджреБрд╕рд░рд╛ рд╕реЗрдЧрдореЗрдВрдЯрдордзреАрд▓ рдШрдЯрдХ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА).

рдЖрддрд╛ рд╕рдордЬрд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдШрдЯрдХ релреп рдорд┐рд│рд╡рд╛рдпрдЪрд╛ рдЖрд╣реЗ:

  • рд╣реЕрд╢ рдЯреЗрдмрд▓ 59 рд╕рд╛рдареА рд╣реЕрд╢ рдХреЛрдбрдЪреА рдЧрдгрдирд╛ рдХрд░рддреЗ, рдЬреЗ 9 рдЖрд╣реЗ.
  • рд╣реЕрд╢ рдЯреЗрдмрд▓ рд╕реЗрдЧрдореЗрдВрдЯ 9 рдордзреНрдпреЗ рд╢реЛрдзрддреЗ, рдкрд╣рд┐рд▓рд╛ рдШрдЯрдХ 99 рдЖрдврд│рд▓рд╛. 99!=59 рдкрд╛рд╕реВрди, рдШрдЯрдХ 99 рд╣рд╛ рд╡реИрдз рдШрдЯрдХ рдирд╛рд╣реА.
  • рд╕рдорд╛рди рддрд░реНрдХ рд╡рд╛рдкрд░реВрди, рджреБрд╕рд░рд╛ рдШрдЯрдХ (9), рддрд┐рд╕рд░рд╛ (79), ..., рд╢реЗрд╡рдЯрдЪрд╛ (29) рдШреЗрддрд▓рд╛ рдЬрд╛рддреЛ.
  • рдШрдЯрдХ рд╕рд╛рдкрдбрд▓рд╛ рдирд╛рд╣реА.
  • рд╢реЛрдзрд╛рд╕рд╛рдареА 7 рдСрдкрд░реЗрд╢рди рдЦрд░реНрдЪ рдЭрд╛рд▓реЗ.

рдЪрд╛рдВрдЧрд▓реЗ рд╣реЕрд╢ рдлрдВрдХреНрд╢рди

рдЬрд╕реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛, рдЖрдкрдг рд╢реЛрдзрдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдореВрд▓реНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди, рдХрд┐рдВрдордд рд╕рдорд╛рди рдирд╛рд╣реА!

рдЬрд░ рдореА рдЖрддрд╛ рд╣реЕрд╢ рдлрдВрдХреНрд╢рди рдореЙрдбреНрдпреБрд▓реЛ 1 рдХреА рдЪреЗ рдмрджрд▓рд▓реЗ (рдореНрд╣рдгрдЬреЗ рд╢реЗрд╡рдЯрдЪреЗ 000 рдЕрдВрдХ рдШреЗрддрд╛рдд), рддрд░ рджреБрд╕рд▒реНрдпрд╛ рд▓реБрдХрдЕрдкрд▓рд╛ рдлрдХреНрдд 000 рдСрдкрд░реЗрд╢рди рд▓рд╛рдЧрддреЗ рдХрд╛рд░рдг рд╕реЗрдЧрдореЗрдВрдЯ 6 рдордзреНрдпреЗ рдХреЛрдгрддреЗрд╣реА рдШрдЯрдХ рдирд╛рд╣реАрдд. рдПрдХ рдЪрд╛рдВрдЧрд▓реЗ рд╣реЕрд╢ рдлрдВрдХреНрд╢рди рд╢реЛрдзрдгреЗ рд╣реЗ рдЦрд░реЗ рдЖрд╡реНрд╣рд╛рди рдЖрд╣реЗ рдЬреЗ рдЦреВрдк рдХрдореА рдШрдЯрдХ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдмрд╛рджрд▓реНрдпрд╛ рддрдпрд╛рд░ рдХрд░реЗрд▓.

рдорд╛рдЭреНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, рдЪрд╛рдВрдЧрд▓реЗ рд╣реЕрд╢ рдлрдВрдХреНрд╢рди рд╢реЛрдзрдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ. рдкрд░рдВрддреБ рд╣реЗ рдПрдХ рд╕рд╛рдзреЗ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ, рдЬреЗрд╡реНрд╣рд╛ рдХреА рдЖрд╣реЗ рддреЗрд╡реНрд╣рд╛ рдЪрд╛рдВрдЧрд▓реЗ рд╣реЕрд╢ рдлрдВрдХреНрд╢рди рд╢реЛрдзрдгреЗ рдЕрдзрд┐рдХ рдХрдареАрдг рдЖрд╣реЗ:

  • рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде - рдЖрдбрдирд╛рд╡)
  • 2 рдУрд│реА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде - рдЖрдбрдирд╛рд╡ рдЖрдгрд┐ рдирд╛рд╡)
  • 2 рдУрд│реА рдЖрдгрд┐ рддрд╛рд░реАрдЦ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде - рдЖрдбрдирд╛рд╡, рдирд╛рд╡ рдЖрдгрд┐ рдЬрдиреНрдорддрд╛рд░реАрдЦ)
  • ...

рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рд╣реЕрд╢ рдлрдВрдХреНрд╢рдирд╕рд╣, рд╣реЕрд╢ рдЯреЗрдмрд▓ рд▓реБрдХрдЕрдкрдЪреА рдХрд┐рдВрдордд O(1).

рдЕреЕрд░реЗ рд╡рд┐ рд╣реЕрд╢ рдЯреЗрдмрд▓

рдЕреЕрд░реЗ рдХрд╛ рд╡рд╛рдкрд░рдд рдирд╛рд╣реА?

рд╣рдореНрдо, рдЪрд╛рдВрдЧрд▓рд╛ рдкреНрд░рд╢реНрди.

  • рд╣реЕрд╢ рдЯреЗрдмрд▓ рдЕрд╕реВ рд╢рдХрддреЗ рдЕрдВрд╢рддрдГ рдореЗрдорд░реА рдордзреНрдпреЗ рд▓реЛрдб, рдЖрдгрд┐ рдЙрд░реНрд╡рд░рд┐рдд рд╡рд┐рднрд╛рдЧ рдбрд┐рд╕реНрдХрд╡рд░ рд░рд╛рд╣реВ рд╢рдХрддрд╛рдд.
  • рдЕреЕрд░реЗрд╕рд╣ рддреБрдореНрд╣реА рдореЗрдорд░реАрдордзреНрдпреЗ рд╕рдВрд▓рдЧреНрди рдЬрд╛рдЧрд╛ рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЬрд░ рддреБрдореНрд╣реА рдореЛрдареЗ рдЯреЗрдмрд▓ рд▓реЛрдб рдХрд░рдд рдЕрд╕рд╛рд▓ рдкреБрд░реЗрд╢реА рд╕рддрдд рдЬрд╛рдЧрд╛ рд╢реЛрдзрдгреЗ рдЦреВрдк рдХрдареАрдг рдЖрд╣реЗ.
  • рд╣реЕрд╢ рдЯреЗрдмрд▓рд╕рд╛рдареА, рддреБрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╡реА рдЕрд╕рд▓реЗрд▓реА рдХреА рдирд┐рд╡рдбреВ рд╢рдХрддрд╛ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рджреЗрд╢ рдЖрдгрд┐ рд╡реНрдпрдХреНрддреАрдЪреЗ рдЖрдбрдирд╛рд╡).

рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреАрд╕рд╛рдареА, рдЖрдкрдг рдпрд╛рдмрджреНрджрд▓ рд▓реЗрдЦ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рдЬрд╛рд╡рд╛рд╣реЕрд╢рдореЕрдк, рдЬреЗ рд╣реЕрд╢ рдЯреЗрдмрд▓рдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдо рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЖрд╣реЗ; рдпрд╛ рд▓реЗрдЦрд╛рдд рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рдВрдХрд▓реНрдкрдирд╛ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ Java рд╕рдордЬрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛