рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

рд╣реЗ рд╣рд╛рдмрд░! рдо рддрдкрд╛рдИрдВрдХреЛ рдзреНрдпрд╛рдирд╛рдХрд░реНрд╖рдгрдорд╛ рд▓реЗрдЦрдХреЛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрджрдЫреБ
"рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ".

рдЬрдм рдпреЛ рд░рд┐рд▓реЗрд╢рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕ рдХреЛ рд▓рд╛рдЧреА рдЖрдЙрдБрджрдЫ рдо рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрджрд┐рди рддрд░ рдХреЗрд╣рд┐ рдЫреБрдЯреЗрдХреЛ рдЫ рдЬрд╕реНрддреЛ рд▓рд╛рдЧреНрдЫред рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИ рдард╛рдЙрдБрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдлрд░рдХ рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рдЙрдкрд▓рдмреНрдз рдЫрдиреН, рд╕рд╛рдиреЛ рд░ рдЙрдкрдпреЛрдЧреА SQLite рджреЗрдЦрд┐ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА Teradata рд╕рдореНрдоред рддрд░ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗ рдХреЗрд╣реА рд▓реЗрдЦрд╣рд░реВ рдорд╛рддреНрд░ рдЫрдиреНред рддреНрдпрд╣рд╛рдБ рдХрддрд┐ рдереЛрд░реИ рдирддрд┐рдЬрд╛рд╣рд░реВ рдЫрдиреН рднрдиреЗрд░ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ "howdoesarelationaldatabasework" рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЖрдлреИрд▓рд╛рдИ рдЦреЛрдЬреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕рдмрд╛рд╣реЗрдХ, рдпреА рд▓реЗрдЦрд╣рд░реВ рдЫреЛрдЯреЛ рдЫрдиреНред рдпрджрд┐ рддрдкрд╛рдЗрдБ рднрд░реНрдЦрд░рдХреЛ рдмрдЬреА рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреАрд╣рд░реВ (рдмрд┐рдЧрдбреЗрдЯрд╛, NoSQL рд╡рд╛ JavaScript) рдЦреЛрдЬреНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫрдиреН рднрдиреЗрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗ рдердк рдЧрд╣рди рд▓реЗрдЦрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реБрдиреЗрдЫред

рдХреЗ рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рдзреЗрд░реИ рдкреБрд░рд╛рдиреЛ рд░ рдзреЗрд░реИ рдмреЛрд░рд┐рдВрдЧ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдкрд╛рдареНрдпрдХреНрд░рдорд╣рд░реВ, рдЕрдиреБрд╕рдиреНрдзрд╛рди рдкрддреНрд░рд╣рд░реВ рд░ рдкреБрд╕реНрддрдХрд╣рд░реВ рдмрд╛рд╣рд┐рд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ?

рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

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

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

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

рдХрд┐рдирдХрд┐ рдпреЛ рд▓рд╛рдореЛ рд░ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд▓реЗрдЦ рд╣реЛ рдЬрд╕рдорд╛ рдзреЗрд░реИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН, рдпрд╕рд▓рд╛рдИ рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреЛ рд╕рдордп рд▓рд┐рдиреБрд╣реЛрд╕реНред рдХреЗрд╣реА рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рдмреБрдЭреНрди рдЧрд╛рд╣реНрд░реЛ рд╣реБрди рд╕рдХреНрдЫ; рддрдкрд╛рдИрдВ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЫреЛрдбреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдЕрдЭреИ рдкрдирд┐ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рддрдкрд╛рдИрд╣рд░реБ рдордзреНрдпреЗ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░рд╣рд░реБ рдХреЛ рд▓рд╛рдЧреА, рдпреЛ рд▓реЗрдЦ 3 рднрд╛рдЧрд╣рд░реБ рдорд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдЫ:

  • рдирд┐рдореНрди-рд╕реНрддрд░ рд░ рдЙрдЪреНрдЪ-рд╕реНрддрд░ рдбрд╛рдЯрд╛рдмреЗрд╕ рдШрдЯрдХрд╣рд░реВрдХреЛ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди
  • рдХреНрд╡реЗрд░реА рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдЕрд╡рд▓реЛрдХрди
  • рд▓реЗрдирджреЗрди рд░ рдмрдлрд░ рдкреВрд▓ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдХреЛ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

рдЖрдзрд╛рд░рднреВрдд рдХреБрд░рд╛рд╣рд░реВрдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН

рд╡рд░реНрд╖ рдкрд╣рд┐рд▓реЗ (рдЧрд╛рд▓реЗрдХреНрд╕реАрдорд╛ рдЯрд╛рдврд╛, рдзреЗрд░реИ рдЯрд╛рдврд╛...), рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХреЛрдбрд┐рдЩ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдХреЛ рд╕рдЩреНрдЦреНрдпрд╛ рдареНрдпрд╛рдХреНрдХреИ рдерд╛рд╣рд╛ рдкрд╛рдЙрдиреБрдкрд░реНрдереНрдпреЛред рдЙрдиреАрд╣рд░реВрд▓реЗ рдЖрдлреНрдиреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд░ рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВ рд╣реГрджрдпрдмрд╛рдЯ рдерд╛рд╣рд╛ рдкрд╛рдПрдХрд╛ рдерд┐рдП рдХрд┐рдирднрдиреЗ рдЙрдиреАрд╣рд░реВрд▓реЗ рдЖрдлреНрдиреЛ рдврд┐рд▓реЛ рдХрдореНрдкреНрдпреБрдЯрд░рд╣рд░реВрдХреЛ CPU рд░ рдореЗрдореЛрд░реА рдмрд░реНрдмрд╛рдж рдЧрд░реНрди рдЦрд░реНрдЪ рдЧрд░реНрди рд╕рдХреНрджреИрдирдиреНред

рдпрд╕ рднрд╛рдЧрдорд╛, рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпреА рдХреЗрд╣реА рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рд╕рдореНрдЭрд╛рдЙрдиреЗрдЫреБ рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВ рдбрд╛рдЯрд╛рдмреЗрд╕ рдмреБрдЭреНрди рдЖрд╡рд╢реНрдпрдХ рдЫрдиреНред рдо рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрдирд┐ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрдиреЗрдЫреБ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕реВрдЪрдХрд╛рдВрдХ.

O(1) рдмрдирд╛рдо O(n2)

рдЖрдЬрдХрд▓, рдзреЗрд░реИ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдордХреЛ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛рдХреЛ рд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрджреИрдирдиреН... рд░ рддрд┐рдиреАрд╣рд░реВ рд╕рд╣реА рдЫрдиреН!

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

рдЕрд╡рдзрд╛рд░рдгрд╛

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдордХреЛ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓реЗ рдбреЗрдЯрд╛рдХреЛ рджрд┐рдЗрдПрдХреЛ рдорд╛рддреНрд░рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░рд╛ рдЧрд░реНрди рдХрддрд┐ рд╕рдордп рд▓рд┐рдиреНрдЫ рднрдиреЗрд░ рд╣реЗрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпреЛ рдЬрдЯрд┐рд▓рддрд╛ рд╡рд░реНрдгрди рдЧрд░реНрди, рд╣рд╛рдореА рдареВрд▓реЛ O рдЧрдгрд┐рддреАрдп рдиреЛрдЯреЗрд╢рди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВред рдпреЛ рдиреЛрдЯреЗрд╢рди рдПрдХ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рдЬрд╕рд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛рдХреЛ рдЗрдирдкреБрдЯрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛рдИ рдХрддрд┐ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ рднрдиреЗрд░ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЬрдм рдо рднрдиреНрдЫреБ "рдпреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдордорд╛ рдЬрдЯрд┐рд▓рддрд╛ O(some_function()) рдЫ", рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛рдИ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛рдорд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди some_function(a_certain_amount_of_data) рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫред

рдпрд╕рд░реА рдпреЛ рдбреЗрдЯрд╛рдХреЛ рдорд╛рддреНрд░рд╛ рд╣реЛрдЗрди рдЬреБрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ **, рдЕрдиреНрдпрдерд╛ ** рдХрд╕рд░реА рдмрдвреНрджреЛ рдбрд╛рдЯрд╛ рднреЛрд▓реНрдпреБрдо рд╕рдВрдЧ рдЕрдкрд░реЗрд╢рди рд╕рдВрдЦреНрдпрд╛ рдмрдвреНрдЫред рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛рд▓реЗ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИрди, рддрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп рдЕрдиреБрдорд╛рди рдЧрд░реНрдиреЗ рд░рд╛рдореНрд░реЛ рддрд░рд┐рдХрд╛ рд╣реЛред

рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

рдпрд╕ рдЧреНрд░рд╛рдлрдорд╛ рддрдкрд╛рдИрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛рдХреЛ рдорд╛рддреНрд░рд╛ рдмрдирд╛рдо рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдореИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рд▓рдЧрд░рд┐рджрдорд┐рдХ рд╕реНрдХреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдВред рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рдбрд╛рдЯрд╛рдХреЛ рдорд╛рддреНрд░рд╛ 1 рджреЗрдЦрд┐ 1 рдмрд┐рд▓рд┐рдпрдирдорд╛ рдЫрд┐рдЯреЛ рдмрдвреНрдЫред рд╣рд╛рдореА рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ рдХрд┐:

  • O(1) рд╡рд╛ рд╕реНрдерд┐рд░ рдЬрдЯрд┐рд▓рддрд╛ рд╕реНрдерд┐рд░ рд░рд╣рдиреНрдЫ (рдЕрдиреНрдпрдерд╛ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд┐рд░ рдЬрдЯрд┐рд▓рддрд╛ рднрдирд┐рджреИрди)ред
  • O(рд▓рдЧ(n)) рдЕрд░реНрдмреМрдВ рдбрд╛рдЯрд╛ рднрдП рдкрдирд┐ рдиреНрдпреВрди рд░рд╣рдиреНрдЫ.
  • рд╕рдмреИрднрдиреНрджрд╛ рдареВрд▓реЛ рдХрдард┐рдирд╛рдИ - O(n2), рдЬрд╣рд╛рдБ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдмрдвреНрдЫ.
  • рдЕрдиреНрдп рджреБрдИ рдЬрдЯрд┐рд▓рддрд╛рд╣рд░реВ рдЪрд╛рдБрдбреИ рдмрдвреНрдЫрдиреНред

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

рдереЛрд░реИ рдорд╛рддреНрд░рд╛рдорд╛ рдбрд╛рдЯрд╛рдХреЛ рд╕рд╛рде, O(1) рд░ O(n2) рдмреАрдЪрдХреЛ рднрд┐рдиреНрдирддрд╛ рдирдЧрдгреНрдп рдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдорд╛рдиреМрдВ рддрдкрд╛рдИрд╕рдБрдЧ рдПрдЙрдЯрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЫ рдЬреБрди 2000 рддрддреНрд╡рд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

  • O(1) рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ 1 рд╕рдЮреНрдЪрд╛рд▓рди рдЦрд░реНрдЪ рдЧрд░реНрдиреЗрдЫ
  • O(log(n)) рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ 7 рдХрд╛рд░реНрдпрд╣рд░реВ рдЦрд░реНрдЪ рдЧрд░реНрдиреЗрдЫ
  • O(n) рдПрд▓реНрдЧреЛрд░рд┐рдереНрдорд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ реи,режрежреж рд╕рдЮреНрдЪрд╛рд▓рди рдЦрд░реНрдЪ рдЧрд░реНрдиреЗрдЫ
  • 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) рдПрд▓реНрдЧреЛрд░рд┐рджрдордХреЛ рд╕рд╛рде рддрдкрд╛рдИрдВрд╕рдБрдЧ рдХрдлреА рдкрд┐рдЙрдиреЗ рд╕рдордп рдЫ (рджреБрдИ рдкрдирд┐!)ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдбреЗрдЯрд╛ рднреЛрд▓реНрдпреБрдордорд╛ рдЕрд░реНрдХреЛ реж рдердкреНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдИрдВрд╕рдБрдЧ рдирд┐рджрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдордп рд╣реБрдиреЗрдЫред

рдЧрд╣рд┐рд░рд╛рдЗрдорд╛ рдЬрд╛рдФрдВ

рд╕рдиреНрджрд░реНрднрдХреЛ рд▓рд╛рдЧрд┐:

  • рд░рд╛рдореНрд░реЛ рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рд▓реБрдХрдЕрдкрд▓реЗ O(1) рдорд╛ рдПрдЙрдЯрд╛ рддрддреНрд╡ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫред
  • рд░рд╛рдореНрд░реЛ рд╕рдиреНрддреБрд▓рд┐рдд рд░реВрдЦрдХреЛ рдЦреЛрдЬреА рдЧрд░реНрджрд╛ O(log(n)) рдорд╛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫред
  • рдПрд░реЗ рдорд╛рд░реНрдлрдд рдЦреЛрдЬреА рдЧрд░реНрджрд╛ O(n) рдорд╛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдЙрддреНрдкрд╛рджрди рдЧрд░реНрджрдЫред
  • рдЙрддреНрддрдо рдХреНрд░рдордмрджреНрдз рдПрд▓реНрдЧреЛрд░рд┐рджрдордХреЛ рдЬрдЯрд┐рд▓рддрд╛ O(n*log(n)) рдЫред
  • рдЦрд░рд╛рдм рдХреНрд░рдордмрджреНрдз рдПрд▓реНрдЧреЛрд░рд┐рджрдордорд╛ рдЬрдЯрд┐рд▓рддрд╛ O(n2) рдЫред

рдиреЛрдЯ: рдирд┐рдореНрди рднрд╛рдЧрд╣рд░реВрдорд╛ рд╣рд╛рдореА рдпреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВ рджреЗрдЦреНрдиреЗрдЫреМрдВред

рддреНрдпрд╣рд╛рдБ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдзреЗрд░реИ рдкреНрд░рдХрд╛рд░ рдЫрдиреН:

  • рдФрд╕рдд рдХреЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп
  • рдЙрддреНрддрдо рдХреЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп
  • рд░ рд╕рдмреИрднрдиреНрджрд╛ рдЦрд░рд╛рдм рдЕрд╡рд╕реНрдерд╛

рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдкреНрд░рд╛рдп: рд╕рдмреИрднрдиреНрджрд╛ рдЦрд░рд╛рдм рдЕрд╡рд╕реНрдерд╛ рд╣реЛред

рдореИрд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдордХреЛ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдорд╛рддреНрд░ рдХреБрд░рд╛ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдерд┐рдПрдБ, рддрд░ рдЬрдЯрд┐рд▓рддрд╛ рдпрд╕рдорд╛ рдкрдирд┐ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫ:

  • рдПрд▓реНрдЧреЛрд░рд┐рдереНрдордХреЛ рдореЗрдореЛрд░реА рдЦрдкрдд
  • рдбрд┐рд╕реНрдХ I/O рдЦрдкрдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо

рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рддреНрдпрд╣рд╛рдБ n2 рднрдиреНрджрд╛ рдЦрд░рд╛рдм рдЬрдЯрд┐рд▓рддрд╛рд╣рд░реВ рдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

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

рдиреЛрдЯ: рдореИрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдареВрд▓реЛ O рдкрджрдирд╛рдордХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛ рджрд┐рдПрдХреЛ рдЫреИрди, рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдЪрд╛рд░ред рддрдкрд╛рдИрдВ рдпреЛ рд▓реЗрдЦ рдорд╛ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд╡рд┐рдХрд┐рдкреЗрдбрд┐рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ (рдПрд╕рд┐рдореНрдкреНрдЯреЛрдЯрд┐рдХ) рдкрд░рд┐рднрд╛рд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ред

рдорд░реНрдЬ рдХреНрд░рдо

рддрдкрд╛рдИрдВрд▓реЗ рд╕рдВрдЧреНрд░рд╣ рдХреНрд░рдордмрджреНрдз рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдБрджрд╛ рдХреЗ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ? рдХреЗ? рддрдкрд╛рдИрдВрд▓реЗ sort() рдкреНрд░рдХрд╛рд░реНрдпрд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ... рдареАрдХ рдЫ, рд░рд╛рдореНрд░реЛ рдЬрд╡рд╛рдл... рддрд░ рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ sort() рдкреНрд░рдХрд╛рд░реНрдпрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рдмреБрдЭреНрдиреБрдкрд░реНрдЫред

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

рдорд░реНрдЬ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдзреЗрд░реИ рдЙрдкрдпреЛрдЧреА рдПрд▓реНрдЧреЛрд░рд┐рджрдорд╣рд░реВ рдЬрд╕реНрддреИ, рдорд░реНрдЬ рдХреНрд░рдо рдПрдЙрдЯрд╛ рдЪрд╛рд▓рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ: N/2 рдЖрдХрд╛рд░рдХреЛ 2 рдХреНрд░рдордмрджреНрдз рдПрд░реЗрд╣рд░реВрд▓рд╛рдИ N-рддрддреНрд╡ рдХреНрд░рдордмрджреНрдз рдПрд░реЗрдорд╛ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджрд╛ N рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВ рдорд╛рддреНрд░ рдЦрд░реНрдЪ рд╣реБрдиреНрдЫред рдпреЛ рдХрд╛рд░реНрдпрд▓рд╛рдИ рдорд░реНрдЬрд░ рднрдирд┐рдиреНрдЫред

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рд╕рдВрдЧ рдпрд╕рдХреЛ рдЕрд░реНрде рдХреЗ рд╣реЗрд░реМрдВ:

рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

рдпреЛ рдЖрдВрдХрдбрд╛рд▓реЗ рджреЗрдЦрд╛рдЙрдБрдЫ рдХрд┐ рдЕрдиреНрддрд┐рдо рдХреНрд░рдордмрджреНрдз 8-рддрддреНрд╡ рдПрд░реЗ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ 2 4-рддрддреНрд╡ arrays рдорд╛ рдПрдХ рдкрдЯрдХ рдорд╛рддреНрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдХрд┐рдирдХрд┐ рджреБрдмреИ 4-рддрддреНрд╡ arrayрд╣рд░реВ рдкрд╣рд┐рд▓реЗ рдиреИ рдХреНрд░рдордмрджреНрдз рдЫрдиреН:

  • 1) рддрдкрд╛рдЗрдБ рджреБрдИ рдПрд░реЗ рдорд╛ рджреБрдмреИ рд╡рд░реНрддрдорд╛рди рддрддреНрд╡рд╣рд░реВ рддреБрд▓рдирд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ (рд╕реБрд░реБрдорд╛ рд╡рд░реНрддрдорд╛рди = рдкрд╣рд┐рд▓реЛ)
  • 2) рддреНрдпрд╕рдкрдЫрд┐ рдпрд╕рд▓рд╛рдИ 8 рддрддреНрд╡ рдПрд░реЗрдорд╛ рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдиреЛ рд▓рд┐рдиреБрд╣реЛрд╕реН
  • 3) рд░ рдПрд░реЗрдорд╛ рдЕрд░реНрдХреЛ рддрддреНрд╡рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ рддрдкрд╛рдИрдВрд▓реЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╛рдиреЛ рддрддреНрд╡ рд▓рд┐рдиреБрднрдпреЛ
  • рд░ 1,2,3 рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реН рдЬрдм рд╕рдореНрдо рддрдкрд╛рдИрдВ arrays рдХреЛ рдЕрдиреНрддрд┐рдо рддрддреНрд╡ рд╕рдореНрдо рдкреБрдЧреНрдиреБрд╣реБрдиреНрдиред
  • рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдИрд▓реЗ рдЕрдиреНрдп рдПрд░реЗрдХрд╛ рдмрд╛рдБрдХреА рддрддреНрд╡рд╣рд░реВрд▓рд╛рдИ 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;

рдорд░реНрдЬ рдХреНрд░рдорд▓реЗ рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рд╕рд╛рдирд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдорд╛ рддреЛрдбреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдореВрд▓ рд╕рдорд╕реНрдпрд╛рдХреЛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рд╛рдирд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдирддрд┐рдЬрд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫ (рдиреЛрдЯ: рдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛рдИ рд╡рд┐рднрд╛рдЬрди рд░ рд╡рд┐рдЬрдп рднрдирд┐рдиреНрдЫ)ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдмреБрдЭреНрдиреБрднрдПрдХреЛ рдЫреИрди рднрдиреЗ, рдЪрд┐рдиреНрддрд╛ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН; рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рджреЗрдЦреНрджрд╛ рдмреБрдЭрд┐рди ред рдпрджрд┐ рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫ рднрдиреЗ, рдо рдпреЛ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓рд╛рдИ рджреБрдИ-рдЪрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдордХреЛ рд░реВрдкрдорд╛ рджреЗрдЦреНрдЫреБ:

  • рд╡рд┐рднрд╛рдЬрди рдЪрд░рдг, рдЬрд╣рд╛рдБ array рд╕рд╛рдиреЛ arrays рдорд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдЫ
  • рдХреНрд░рдордмрджреНрдз рдЪрд░рдг рд╣реЛ рдЬрд╣рд╛рдБ рд╕рд╛рдирд╛ рдПрд░реЗрд╣рд░реВ рдЬреЛрдбрд┐рдПрдХреЛ рд╣реБрдиреНрдЫ (рдпреБрдирд┐рдпрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░) рдареВрд▓реЛ рдПрд░реЗ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ред

рд╡рд┐рднрд╛рдЬрди рдЪрд░рдг

рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

рд╡рд┐рднрд╛рдЬрди рдЪрд░рдгрдорд╛, рдПрд░реЗрд▓рд╛рдИ 3 рдЪрд░рдгрд╣рд░реВрдорд╛ рдПрдХрд╛рддреНрдордХ рдПрд░реЗрд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдЪрд░рдгрд╣рд░реВрдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд╕рдВрдЦреНрдпрд╛ log(N) (N=8, log(N) = 3 рджреЗрдЦрд┐) рд╣реЛред

рдорд▓рд╛рдИ рдпреЛ рдХрд╕рд░реА рдерд╛рд╣рд╛ рдЫ?

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

рдХреНрд░рдордмрджреНрдз рдЪрд░рдг

рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

рдХреНрд░рдордмрджреНрдз рдЪрд░рдгрдорд╛, рддрдкрд╛рдЗрдБ рдПрдХрд╛рддреНрдордХ (рдПрдХрд▓-рддрддреНрд╡) arrays рд╕рдБрдЧ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдгрдХреЛ рдмрдЦрдд рддрдкрд╛рдИрд▓реЗ рдзреЗрд░реИ рдорд░реНрдЬ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рд░ рдХреБрд▓ рд▓рд╛рдЧрдд N = 8 рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рд╣реЛ:

  • рдкрд╣рд┐рд▓реЛ рдЪрд░рдгрдорд╛ рддрдкрд╛рдЗрдБрд╕рдБрдЧ 4 рдорд░реНрдЬрд╣рд░реВ рдЫрдиреН рдЬрд╕рдорд╛ рдкреНрд░рддреНрдпреЗрдХ 2 рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдЦрд░реНрдЪ рд╣реБрдиреНрдЫрдиреН
  • рджреЛрд╕реНрд░реЛ рдЪрд░рдгрдорд╛ рддрдкрд╛рдЗрдБрд╕рдБрдЧ 2 рдорд░реНрдЬрд╣рд░реВ рдЫрдиреН рдЬрд╕рдорд╛ рдкреНрд░рддреНрдпреЗрдХ 4 рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдЦрд░реНрдЪ рд╣реБрдиреНрдЫрдиреН
  • рддреЗрд╕реНрд░реЛ рдЪрд░рдгрдорд╛ рддрдкрд╛рдЗрдБрд╕рдБрдЧ 1 рдорд░реНрдЬ рдЫ рдЬрд╕рдХреЛ рд▓рд╛рдЧрдд 8 рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдЫрдиреН

рддреНрдпрд╣рд╛рдБ рд▓рдЧ (N) рдЪрд░рдгрд╣рд░реВ рднрдПрдХреЛрд▓реЗ, рдХреБрд▓ рд▓рд╛рдЧрдд рдПрди * рд▓рдЧ (рдПрди) рд╕рдЮреНрдЪрд╛рд▓рди.

рдорд░реНрдЬ рдХреНрд░рдордХрд╛ рдлрд╛рдЗрджрд╛рд╣рд░реВ

рдпреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд┐рди рдпрддрд┐ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЫ?

рдХрд┐рдирднрдиреЗ:

  • рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдореЗрдореЛрд░реА рдлреБрдЯрдкреНрд░рд┐рдиреНрдЯ рдХрдо рдЧрд░реНрди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рддрд╛рдХрд┐ рддрдкрд╛рдЗрдБ рдирдпрд╛рдБ рдПрд░реЗрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрди рддрд░ рд╕рд┐рдзреИ рдЗрдирдкреБрдЯ рдПрд░реЗ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдиреЛрдЯ: рдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рднрдирд┐рдиреНрдЫ in-рдард╛рдЙрдБ (рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдмрд┐рдирд╛ рдХреНрд░рдордмрджреНрдз)ред

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

рдиреЛрдЯ: рдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рднрдирд┐рдиреНрдЫ рдмрд╛рд╣реНрдп рдкреНрд░рдХрд╛рд░.

  • рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рдзреЗрд░реИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ/рдереНрд░реЗрдбрд╣рд░реВ/рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рдЪрд▓рд╛рдЙрди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╡рд┐рддрд░рд┐рдд рдорд░реНрдЬ рдХреНрд░рдо рдореБрдЦреНрдп рдШрдЯрдХ рдордзреНрдпреЗ рдПрдХ рд╣реЛ Hadoop (рдЬреБрди рдареВрд▓реЛ рдбрд╛рдЯрд╛ рдорд╛ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реЛ)ред

  • рдпреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдорд▓реЗ рдиреЗрддреГрддреНрд╡рд▓рд╛рдИ рд╕реБрдирдорд╛ рдкрд░рд┐рдгрдд рдЧрд░реНрди рд╕рдХреНрдЫ (рд╡рд╛рд╕реНрддрд╡рдорд╛!)

рдпреЛ рдХреНрд░рдордмрджреНрдз рдЧрд░реНрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдзреЗрд░реИ рдЬрд╕реЛ (рдпрджрд┐ рд╕рдмреИ рд╣реЛрдЗрди) рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рддрд░ рдпреЛ рдПрдХ рдорд╛рддреНрд░ рд╣реЛрдЗрдиред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдердк рдЬрд╛рдиреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпреЛ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдХрд╛рд░реНрдп, рдЬрд╕рд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рдбрд╛рдЯрд╛рдмреЗрд╕ рдХреНрд░рдордмрджреНрдз рдПрд▓реНрдЧреЛрд░рд┐рджрдордХреЛ рдлрд╛рдЗрджрд╛ рд░ рд╡рд┐рдкрдХреНрд╖рдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрджрдЫред

рдПрд░реЗ, рдЯреНрд░реА рд░ рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛

рдЕрдм рдЬрдм рд╣рд╛рдореАрд▓реЗ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рд░ рдХреНрд░рдордмрджреНрдз рдЧрд░реНрдиреЗ рд╡рд┐рдЪрд╛рд░ рдмреБрдЭреНрдЫреМрдВ, рдореИрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ 3 рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдмрддрд╛рдЙрдиреБрдкрд░реНрджрдЫред рдпреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВ рдЖрдзреБрдирд┐рдХ рдбрд╛рдЯрд╛рдмреЗрд╕ рдХреЛ рдЖрдзрд╛рд░ рд╣реЛред рдо рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрдирд┐ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрдиреЗрдЫреБ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕реВрдЪрдХрд╛рдВрдХ.

рдПрд░реНрд░реЗ

рджреБрдИ-рдЖрдпрд╛рдореА рдПрд░реЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд░рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реЛред рддрд╛рд▓рд┐рдХрд╛рд▓рд╛рдИ рдПрд░реЗрдХреЛ рд░реВрдкрдорд╛ рд╕реЛрдЪреНрди рд╕рдХрд┐рдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

рдпреЛ реи-рдЖрдпрд╛рдореА рдПрд░реЗ рдкрдЩреНрдХреНрддрд┐ рд░ рд╕реНрддрдореНрднрд╣рд░реВ рднрдПрдХреЛ рддрд╛рд▓рд┐рдХрд╛ рд╣реЛ:

  • рдкреНрд░рддреНрдпреЗрдХ рд░реЗрдЦрд╛рд▓реЗ рдПрдХ рдЗрдХрд╛рдИрд▓рд╛рдИ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрджрдЫ
  • рд╕реНрддрдореНрднрд╣рд░реВрд▓реЗ рдПрдХрд╛рдЗрдХреЛ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗ рдЧреБрдгрд╣рд░реВ рднрдгреНрдбрд╛рд░ рдЧрд░реНрджрдЫред
  • рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдореНрднрд▓реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░рдХреЛ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрджрдЫ (рдкреВрд░реНрдгрд╛рдВрдХ, рд╕реНрдЯреНрд░рд┐рдЩ, рдорд┐рддрд┐...)ред

рдпреЛ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рд░ рджреГрд╢реНрдпрд╛рд╡рд▓реЛрдХрди рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ, рддрдерд╛рдкрд┐, рдЬрдм рддрдкрд╛рдЗрдБ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рди рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдпреЛ рдЙрдкрдпреБрдХреНрдд рдЫреИрдиред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрдкрд╛рдЗрдБ UK рдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдмреИ рдХреЗрдЯрд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдЩреНрдХреНрддрд┐рд▓рд╛рдИ рд╣реЗрд░реНрдиреБ рдкрд░реНрдЫ рдХрд┐ рддреНрдпреЛ рдкрдЩреНрдХреНрддрд┐ UK рдХреЛ рд╣реЛ рдХрд┐ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиред рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ N рд▓реЗрдирджреЗрди рдЦрд░реНрдЪ рдЧрд░реНрдиреЗрдЫрдХрд╣рд╛рдБ N - рд▓рд╛рдЗрдирд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛, рдЬреБрди рдЦрд░рд╛рдм рдЫреИрди, рддрд░ рддреНрдпрд╣рд╛рдБ рдЫрд┐рдЯреЛ рдмрд╛рдЯреЛ рд╣реБрди рд╕рдХреНрдЫ? рдЕрдм рд╣рд╛рдореА рд░реБрдЦрд╣рд░реБ рд╕рдВрдЧ рдкрд░рд┐рдЪрд┐рдд рд╣реБрди рдХреЛ рд▓рд╛рдЧреА рд╕рдордп рд╣реЛред

рдиреЛрдЯ: рдзреЗрд░реИ рдЖрдзреБрдирд┐рдХ рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВрд▓реЗ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдПрд░реЗрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ: рд╣рд┐рдк-рд╕рдВрдЧрдард┐рдд рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛-рд╕рдВрдЧрдард┐рдд рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВред рддрд░ рдпрд╕рд▓реЗ рд╕реНрддрдореНрднрд╣рд░реВрдХреЛ рд╕рдореВрд╣рдорд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрд╡рд╕реНрдерд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИрдиред

рдбрд╛рдЯрд╛рдмреЗрд╕ рд░реВрдЦ рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛

рдмрд╛рдЗрдирд░реА рдЦреЛрдЬ рд░реВрдЦ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЧреБрдг рднрдПрдХреЛ рдмрд╛рдЗрдирд░реА рд░реВрдЦ рд╣реЛ, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрдорд╛ рдХреБрдЮреНрдЬреА рд╣реБрдиреБрдкрд░реНрдЫ:

  • рдмрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реАрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рдХреБрдЮреНрдЬреАрд╣рд░реВ рднрдиреНрджрд╛ рдареВрд▓реЛ
  • рджрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реАрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рдХреБрдЮреНрдЬреАрд╣рд░реВ рднрдиреНрджрд╛ рдХрдо

рд╣реЗрд░реМрдВ рдпреЛ рджреГрд╢реНрдп рдЕрд░реНрде рдХреЗ рд╣реЛ

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

рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

рдпреЛ рд░реВрдЦрдорд╛ N = 15 рддрддреНрд╡рд╣рд░реВ рдЫрдиреНред рдорд╛рдиреМрдВ рдо 208 рдЦреЛрдЬреНрджреИ рдЫреБ:

  • рдо рд░реВрдЯрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрдЫреБ рдЬрд╕рдХреЛ рдХреБрдЮреНрдЬреА 136 рд╣реЛред 136<208 рджреЗрдЦрд┐, рдо рдиреЛрдб 136 рдХреЛ рджрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реАрдорд╛ рд╣реЗрд░реНрдЫреБред
  • 398>208 рддреНрдпрд╕реИрд▓реЗ рдо рдиреЛрдб 398 рдХреЛ рдмрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реА рд╣реЗрд░реНрджреИ рдЫреБ
  • 250>208 рддреНрдпрд╕реИрд▓реЗ рдо рдиреЛрдб 250 рдХреЛ рдмрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реА рд╣реЗрд░реНрджреИ рдЫреБ
  • 200 <208, рддреНрдпрд╕реИрд▓реЗ рдо рдиреЛрдб 200 рдХреЛ рджрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реА рд╣реЗрд░реНрджреИ рдЫреБред рддрд░ 200 рдХреЛ рдХреБрдиреИ рджрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реА рдЫреИрди, рдореВрд▓реНрдп рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрди (рдпрджрд┐ рдпреЛ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рднрдиреЗ, рдпреЛ рд╕рд╣реА рд╕рдмрдЯреНрд░реА 200 рдорд╛ рд╣реБрдиреЗрдЫ)ред

рдЕрдм рдорд╛рдиреМрдВ рдо рекреж рдЦреЛрдЬреНрджреИ рдЫреБ

  • рдо рд░реВрдЯрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрдЫреБ рдЬрд╕рдХреЛ рдХреБрдЮреНрдЬреА 136 рд╣реЛред 136 > 40 рджреЗрдЦрд┐, рдо рдиреЛрдб 136 рдХреЛ рдмрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реАрдорд╛ рд╣реЗрд░реНрдЫреБред
  • 80 > 40, рддреНрдпрд╕реИрд▓реЗ рдо рдиреЛрдб 80 рдХреЛ рдмрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реА рд╣реЗрд░реНрджреИ рдЫреБ
  • рекреж = рекреж, рдиреЛрдб рдЕрд╡рд╕реНрдерд┐рдд рдЫред рдо рдиреЛрдб рднрд┐рддреНрд░ рдкрдЩреНрдХреНрддрд┐ ID рдкреБрдирдГрдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫреБ (рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫреИрди) рд░ рджрд┐рдЗрдПрдХреЛ рдкрдЩреНрдХреНрддрд┐ ID рдХреЛ рд▓рд╛рдЧрд┐ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред
  • рдкрдЩреНрдХреНрддрд┐ ID рдерд╛рд╣рд╛ рдкрд╛рдЙрдБрджрд╛ рдорд▓рд╛рдИ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдбрд╛рдЯрд╛ рдХрд╣рд╛рдБ рдЫ рднрдиреЗрд░ рдерд╛рд╣рд╛ рдкрд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдо рдпрд╕рд▓рд╛рдИ рддреБрд░реБрдиреНрддреИ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреБред

рдЕрдиреНрддрдорд╛, рджреБрдмреИ рдЦреЛрдЬрд╣рд░реВрд▓реЗ рдорд▓рд╛рдИ рд░реВрдЦ рднрд┐рддреНрд░рдХреЛ рд╕реНрддрд░рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдЦрд░реНрдЪ рдЧрд░реНрдиреЗрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдорд░реНрдЬ рдХреНрд░рдордХреЛ рдмрд╛рд░реЗрдорд╛ рднрд╛рдЧ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкрдвреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрд▓реЗ рддреНрдпрд╣рд╛рдБ рд▓рдЧ (N) рд╕реНрддрд░рд╣рд░реВ рджреЗрдЦреНрдиреБрдкрд░реНрджрдЫред рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ, рдЦреЛрдЬ рд▓рд╛рдЧрдд рд▓рдЧ (N), рдЦрд░рд╛рдм рдЫреИрди!

рд╣рд╛рдореНрд░реЛ рд╕рдорд╕реНрдпрд╛рдорд╛ рдлрд░реНрдХреМрдВ

рддрд░ рдпреЛ рдзреЗрд░реИ рдЕрдореВрд░реНрдд рдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореНрд░реЛ рд╕рдорд╕реНрдпрд╛рдорд╛ рдлрд░реНрдХреМрдВред рд╕рд╛рдзрд╛рд░рдг рдкреВрд░реНрдгрд╛рдВрдХрдХреЛ рд╕рдЯреНрдЯрд╛, рдЕрдШрд┐рд▓реНрд▓реЛ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдХрд╕реИрдХреЛ рджреЗрд╢рд▓рд╛рдИ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрдиреЗ рд╕реНрдЯреНрд░рд┐рдЩрдХреЛ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдорд╛рдиреМрдВ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдПрдЙрдЯрд╛ рд░реВрдЦ рдЫ рдЬрд╕рдорд╛ рддрд╛рд▓рд┐рдХрд╛рдХреЛ "рджреЗрд╢" рдХреНрд╖реЗрддреНрд░ (рд╕реНрддрдореНрдн рей) рд╕рдорд╛рд╡реЗрд╢ рдЫ:

  • рдпрджрд┐ рддрдкрд╛рдЗрдБ рдпреБрдХреЗрдорд╛ рдХрд╕рд▓реЗ рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рдЬрд╛рдиреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ
  • рддрдкрд╛рдИрдВрд▓реЗ рдЧреНрд░реЗрдЯ рдмреНрд░рд┐рдЯреЗрдирдХреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрдиреЗ рдиреЛрдб рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд░реВрдЦрд▓рд╛рдИ рд╣реЗрд░реНрдиреБрд╣реБрдиреНрдЫ
  • "UKnode" рднрд┐рддреНрд░ рддрдкрд╛рдИрдВрд▓реЗ UK рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВрдХреЛ рд╕реНрдерд╛рди рдкрд╛рдЙрдиреБрд╣реБрдиреЗрдЫред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдПрд░реЗ рд╕реАрдзреИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ рдпреЛ рдЦреЛрдЬрд▓реЗ N рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдХреЛ рд╕рдЯреНрдЯрд╛ рд▓рдЧ(N) рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВ рдЦрд░реНрдЪ рдЧрд░реНрдиреЗрдЫред рддрдкрд╛рдИрдВрд▓реЗ рднрд░реНрдЦрд░реИ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрдиреБрднрдПрдХреЛ рдерд┐рдпреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕реВрдЪрдХрд╛рдВрдХ.

рддрдкрд╛рдИрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рд╕рдореВрд╣ (рд╕реНрдЯреНрд░рд┐рдЩ, рдирдореНрдмрд░, 2 рд▓рд╛рдЗрди, рдирдореНрдмрд░ рд░ рд╕реНрдЯреНрд░рд┐рдЩ, рдорд┐рддрд┐...) рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд░реВрдЦ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬрдмрд╕рдореНрдо рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдХреБрдЮреНрдЬреАрд╣рд░реВ (рдЬрд╕реНрддреИ рдлрд┐рд▓реНрдб рд╕рдореВрд╣рд╣рд░реВ) рддреБрд▓рдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдХрд╛рд░реНрдп рдЫ рддрд╛рдХрд┐ рддрдкрд╛рдЗрдБ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдХреБрдЮреНрдЬреАрд╣рд░реВ рдмреАрдЪ рдЕрд░реНрдбрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЬреБрди рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдХреБрдиреИ рдкрдирд┐ рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рдХрд╛рд░рдХреЛ рдорд╛рдорд▓рд╛ рд╣реЛ)ред

B+TreeIndex

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

  • рдХреЗрд╡рд▓ рддрд▓реНрд▓реЛ рдиреЛрдбрд╣рд░реВ (рдкрд╛рддрд╣рд░реВ) рдЬрд╛рдирдХрд╛рд░реА рднрдгреНрдбрд╛рд░рдг (рд╕рдореНрдмрдиреНрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕реНрдерд╛рди)
  • рдмрд╛рдБрдХреА рдиреЛрдбрд╣рд░реВ рдпрд╣рд╛рдБ рдЫрдиреН рд░реБрдЯрд┐рдЩрдХрд╛ тАЛтАЛрд▓рд╛рдЧрд┐ рд╕рд╣реА рдиреЛрдбрдорд╛ рдЦреЛрдЬреАрдХреЛ рдХреНрд░рдордорд╛.

рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

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

рдпрд╕ B+Tree рдХреЛ рд╕рд╛рде, рдпрджрд┐ рддрдкрд╛рдИрдВ 40 рд░ 100 рдмреАрдЪрдХреЛ рдорд╛рдирд╣рд░реВ рдЦреЛрдЬреНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ:

  • рддрдкрд╛рдИрдВрд▓реЗ рднрд░реНрдЦрд░реИ 40 рдЦреЛрдЬреНрдиреБ рдкрд░реНрдЫ (рд╡рд╛ 40 рдкрдЫрд┐рдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдирдЬрд┐рдХрдХреЛ рдорд╛рди рдпрджрд┐ 40 рдЕрд╡рд╕реНрдерд┐рдд рдЫреИрди рднрдиреЗ) рддрдкрд╛рдИрдВрд▓реЗ рдЕрдШрд┐рд▓реНрд▓реЛ рд░реВрдЦрдХреЛ рд╕рд╛рде рдЧрд░реНрдиреБрднрдпреЛред
  • рддреНрдпрд╕рдкрдЫрд┐ 40 рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реАрд╣рд░реВ рдкреНрд░рддреНрдпрдХреНрд╖ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд▓рд┐рдЩреНрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЬрдореНрдорд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬрдмрд╕рдореНрдо рддрдкрд╛рдИрдВ 100 рдкреБрдЧреНрдиреБрд╣реБрдиреНрдиред

рдорд╛рдиреМрдВ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ M рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реАрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрднрдпреЛ рд░ рд░реВрдЦрдорд╛ N рдиреЛрдбрд╣рд░реВ рдЫрдиреНред рдЕрдШрд┐рд▓реНрд▓реЛ рд░реВрдЦ рдЬрд╕реНрддреИ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЛрдб рд▓рд╛рдЧрдд рд▓рдЧ (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+Tree рдЖрддреНрдо-рдХреНрд░рдо рд░ рд╕рдиреНрддреБрд▓рд┐рдд рд╣реБрдиреБрдкрд░реНрдЫред рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐, рдпреЛ рд╕реНрдорд╛рд░реНрдЯ рдореЗрдЯрд╛рдЙрдиреЗ рд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдЕрдкрд░реЗрд╕рди рд╕рдВрдЧ рд╕рдореНрднрд╡ рдЫред рддрд░ рдпреЛ рд▓рд╛рдЧрддрдорд╛ рдЖрдЙрдБрдЫ: B+ рд░реВрдЦ рд▓рд╛рдЧрдд O(log(N)) рдорд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рд░ рдореЗрдЯрд╛рдЙрдиреЗред рддреНрдпрд╕рдХрд╛рд░рдг рддрдкрд╛рдИрдВрд╣рд░реВ рдордзреНрдпреЗ рдХреЗрд╣реАрд▓реЗ рдпреЛ рд╕реБрдиреЗрдХрд╛ рдЫрдиреН рдзреЗрд░реИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЗрдиред рд╕рд╛рдБрдЪреНрдЪреИ, рддрдкрд╛рдЗрдБ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкрдЩреНрдХреНрддрд┐рдХреЛ рдЫрд┐рдЯреЛ рд╕рдореНрдорд┐рд▓рд┐рдд/рдЕрдкрдбреЗрдЯ/рдореЗрдЯрд╛рдЙрдиреЗ рдХрд╛рдорд▓рд╛рдИ рд╕реБрд╕реНрдд рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫрдХрд┐рдирднрдиреЗ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдорд╣рдБрдЧреЛ O(log(N)) рдЕрдкрд░реЗрд╢рди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрд╛рд▓рд┐рдХрд╛рдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрд╕рдмрд╛рд╣реЗрдХ, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдердкреНрдиреБ рднрдиреЗрдХреЛ рдердк рдХрд╛рд░реНрдпрднрд╛рд░ рд╣реЛ рд▓реЗрдирджреЗрди рдкреНрд░рдмрдиреНрдзрдХ (рд▓реЗрдЦрдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдиреЗрдЫ)ред

рдердк рд╡рд┐рд╡рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдЗрдБ рд╡рд┐рдХрд┐рдкрд┐рдбрд┐рдпрд╛рдорд╛ рд▓реЗрдЦ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ B+рдЯреНрд░реАред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдбреЗрдЯрд╛рдмреЗрд╕рдорд╛ B+Tree рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдпреЛ рд▓реЗрдЦ ╨╕ рдпреЛ рд▓реЗрдЦ рдПрдХ рдЕрдЧреНрд░рдгреА MySQL рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдмрд╛рдЯред рддрд┐рдиреАрд╣рд░реВ рджреБрд╡реИрд▓реЗ рдХрд╕рд░реА InnoDB (MySQL рдЗрдиреНрдЬрд┐рди) рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛рдорд╛ рдХреЗрдиреНрджреНрд░рд┐рдд рдЫрдиреНред

рдиреЛрдЯ: рдПрдХ рдкрд╛рдардХрд▓реЗ рдорд▓рд╛рдИ рднрдиреЗ рдХрд┐, рдХрдо-рд╕реНрддрд░ рдЕрдиреБрдХреВрд▓рдирдХреЛ рдХрд╛рд░рдгрд▓реЗ, B+ рд░реВрдЦ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рдиреНрддреБрд▓рд┐рдд рд╣реБрдиреБрдкрд░реНрдЫред

рд╣реНрдпрд╛рд╕рдЯреЗрдмрд▓

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

рд╣реНрдпрд╛рд╕ рдЯреЗрдмрд▓ рдПрдХ рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рдЬрд╕рд▓реЗ рдЪрд╛рдБрдбреИ рдЖрдлреНрдиреЛ рдХреБрдЮреНрдЬреА рджреНрд╡рд╛рд░рд╛ рдПрдХ рддрддреНрд╡ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫред рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

  • рдХреБрдЮреНрдЬреА рддрдкрд╛рдИрдВрдХреЛ рддрддреНрд╡рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐
  • рд╣реНрдпрд╛рд╕ рдкреНрд░рдХрд╛рд░реНрдп рдХреБрдЮреНрдЬреАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ред рдХрдореНрдкреНрдпреБрдЯреЗрдб рдХреБрдЮреНрдЬреА рд╣реНрдпрд╛рд╕рд╣рд░реВрд▓реЗ рддрддреНрд╡рд╣рд░реВрдХреЛ рд╕реНрдерд╛рди рджрд┐рдиреНрдЫ (рдЬрд╕рд▓рд╛рдИ рднрдирд┐рдиреНрдЫ рдЦрдгреНрдбрд╣рд░реВ ).
  • рдХреБрдЮреНрдЬреАрд╣рд░реВ рддреБрд▓рдирд╛ рдЧрд░реНрди рдХрд╛рд░реНрдпред рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╣реА рдЦрдгреНрдб рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрднрдпреЛ, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рддреБрд▓рдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЦрдгреНрдб рднрд┐рддреНрд░ рдЦреЛрдЬреНрдиреБ рднрдПрдХреЛ рддрддреНрд╡ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБ рдкрд░реНрдЫред

рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг

рд╕реНрдкрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдФрдВ:

рд░рд┐рд▓реЗрд╕рдирд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ (рднрд╛рдЧ рез)

рдпреЛ рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛рдорд╛ резреж рдЦрдгреНрдбрд╣рд░реВ рдЫрдиреНред рдХрд┐рдирднрдиреЗ рдо рдЕрд▓реНрдЫреА рдЫреБ, рдореИрд▓реЗ рдХреЗрд╡рд▓ 10 рдЦрдгреНрдбрд╣рд░реВ рдЪрд┐рддреНрд░рдг рдЧрд░реЗрдВ, рддрд░ рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рддрдкрд╛рдИрдВ рд╕реНрдорд╛рд░реНрдЯ рд╣реБрдиреБрд╣реБрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрд░реВ 5 рдЦрдгреНрдбрд╣рд░реВ рдЖрдлреИрдВ рдЪрд┐рддреНрд░рдг рдЧрд░реНрди рджрд┐рдиреЗрдЫреБред рдореИрд▓реЗ рдХреБрдЮреНрдЬреАрдХреЛ рд╣реНрдпрд╛рд╕ рдкреНрд░рдХрд╛рд░реНрдп рдореЛрдбреНрдпреБрд▓реЛ резреж рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдВред рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рдо рдпрд╕рдХреЛ рдЦрдгреНрдб рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рддрддреНрд╡рдХреЛ рдХреБрдЮреНрдЬреАрдХреЛ рдЕрдиреНрддрд┐рдо рдЕрдВрдХ рдорд╛рддреНрд░ рднрдгреНрдбрд╛рд░ рдЧрд░реНрдЫреБ:

  • рдпрджрд┐ рдЕрдиреНрддрд┐рдо рдЕрдВрдХ реж рд╣реЛ рднрдиреЗ, рддрддреНрд╡ рдЦрдгреНрдб реж рдорд╛ рдкрд░реНрдЫ,
  • рдпрджрд┐ рдЕрдиреНрддрд┐рдо рдЕрдВрдХ реж рд╣реЛ рднрдиреЗ, рддрддреНрд╡ рдЦрдгреНрдб реж рдорд╛ рдкрд░реНрдЫ,
  • рдпрджрд┐ рдЕрдиреНрддрд┐рдо рдЕрдВрдХ реи рд╣реЛ рднрдиреЗ, рддрддреНрд╡ рдХреНрд╖реЗрддреНрд░ реи рдорд╛ рдкрд░реНрджрдЫ,
  • ...

рдореИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ рддреБрд▓рдирд╛ рдкреНрд░рдХрд╛рд░реНрдп рджреБрдИ рдкреВрд░реНрдгрд╛рдВрдХрд╣рд░реВ рдмреАрдЪрдХреЛ рд╕рдорд╛рдирддрд╛ рд╣реЛред

рдорд╛рдиреМрдВ рддрдкрд╛рдИрдВ рддрддреНрд╡ 78 рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ:

  • рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛рд▓реЗ 78 рдХреЛ рд▓рд╛рдЧрд┐ рд╣реНрдпрд╛рд╕ рдХреЛрдб рдЧрдгрдирд╛ рдЧрд░реНрджрдЫ, рдЬреБрди 8 рд╣реЛред
  • рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛рд▓реЗ рдЦрдгреНрдб 8 рдорд╛ рд╣реЗрд░реНрдЫ, рд░ рдпреЛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреЗ рдкрд╣рд┐рд▓реЛ рддрддреНрд╡ 78 рд╣реЛред
  • рдЙрд╕рд▓реЗ рддрдкрд╛рдИрд▓рд╛рдИ рд╡рд╕реНрддреБ 78 рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдЫ
  • рдЦреЛрдЬ рдЦрд░реНрдЪ рдорд╛рддреНрд░ 2 рдЕрдкрд░реЗрд╢рдирд╣рд░реВ (рдПрдЙрдЯрд╛ рд╣реНрдпрд╛рд╕ рдорд╛рди рдЧрдгрдирд╛ рдЧрд░реНрди рд░ рдЕрд░реНрдХреЛ рдЦрдгреНрдб рднрд┐рддреНрд░ рддрддреНрд╡ рд╣реЗрд░реНрди)ред

рдЕрдм рдорд╛рдиреМрдВ рддрдкрд╛рдИрдВ рддрддреНрд╡ 59 рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ:

  • рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛рд▓реЗ 59 рдХреЛ рд▓рд╛рдЧрд┐ рд╣реНрдпрд╛рд╕ рдХреЛрдб рдЧрдгрдирд╛ рдЧрд░реНрджрдЫ, рдЬреБрди 9 рд╣реЛред
  • рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛рд▓реЗ рдЦрдгреНрдб 9 рдорд╛ рдЦреЛрдЬреНрдЫ, рдкрд╣рд┐рд▓реЛ рддрддреНрд╡ 99 рдкрд╛рдЗрдиреНрдЫред 99!=59 рджреЗрдЦрд┐, рддрддреНрд╡ 99 рдорд╛рдиреНрдп рддрддреНрд╡ рд╣реЛрдЗрдиред
  • рдПрдЙрдЯреИ рддрд░реНрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рджреЛрд╕реНрд░реЛ рддрддреНрд╡ (9), рддреЗрд╕реНрд░реЛ (79), ..., рдЕрдиреНрддрд┐рдо (29) рд▓рд┐рдЗрдиреНрдЫред
  • рддрддреНрд╡ рдлреЗрд▓рд╛ рдкрд░реЗрдиред
  • рдЦреЛрдЬ рд▓рд╛рдЧрдд 7 рдЕрдкрд░реЗрд╢рди.

рд░рд╛рдореНрд░реЛ рд╣реНрдпрд╛рд╕ рдкреНрд░рдХрд╛рд░реНрдп

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрдкрд╛рдИрд▓реЗ рдЦреЛрдЬреНрдиреБ рднрдПрдХреЛ рдореВрд▓реНрдпрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ, рд▓рд╛рдЧрдд рд╕рдорд╛рди рдЫреИрди!

рдпрджрд┐ рдореИрд▓реЗ рдЕрдм рдХреБрдЮреНрдЬреАрдХреЛ рд╣реНрдпрд╛рд╕ рдкреНрд░рдХрд╛рд░реНрдп рдореЛрдбреНрдпреБрд▓реЛ 1 рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреБ (рдЕрд░реНрдерд╛рдд, рдЕрдиреНрддрд┐рдо 000 рдЕрдВрдХ рд▓рд┐рдБрджреИ), рджреЛрд╕реНрд░реЛ рд▓реБрдХрдЕрдкрд▓реЗ 000 рдЕрдкрд░реЗрд╢рди рдорд╛рддреНрд░ рдЦрд░реНрдЪ рдЧрд░реНрдЫ рдХрд┐рдирднрдиреЗ рддреНрдпрд╣рд╛рдБ рдЦрдгреНрдб 6 рдорд╛ рдХреБрдиреИ рддрддреНрд╡рд╣рд░реВ рдЫреИрдирдиреНред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪреБрдиреМрддреА рднрдиреЗрдХреЛ рд░рд╛рдореНрд░реЛ рд╣реНрдпрд╛рд╕ рдкреНрд░рдХрд╛рд░реНрдп рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБ рд╣реЛ рдЬрд╕рд▓реЗ рдзреЗрд░реИ рд╕рд╛рдиреЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рддрддреНрд╡рд╣рд░реВ рднрдПрдХреЛ рдмрд╛рд▓реНрдЯрд┐рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ.

рдореЗрд░реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рд░рд╛рдореНрд░реЛ рд╣реНрдпрд╛рд╕ рдкреНрд░рдХрд╛рд░реНрдп рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫред рддрд░ рдпреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рд╣реЛ, рд░рд╛рдореНрд░реЛ рд╣реНрдпрд╛рд╕ рдкреНрд░рдХрд╛рд░реНрдп рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рдЫ рдЬрдм рдХреБрдЮреНрдЬреА рд╣реЛ:

  • рд╕реНрдЯреНрд░рд┐рдЩ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ - рдЕрдиреНрддрд┐рдо рдирд╛рдо)
  • реи рд░реЗрдЦрд╛рд╣рд░реВ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ - рдЕрдиреНрддрд┐рдо рдирд╛рдо рд░ рдкрд╣рд┐рд▓реЛ рдирд╛рдо)
  • 2 рд░реЗрдЦрд╛ рд░ рдорд┐рддрд┐ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ - рдЕрдиреНрддрд┐рдо рдирд╛рдо, рдкрд╣рд┐рд▓реЛ рдирд╛рдо рд░ рдЬрдиреНрдо рдорд┐рддрд┐)
  • ...

рд░рд╛рдореНрд░реЛ рд╣реНрдпрд╛рд╕ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд╕рд╛рде, рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛ рд▓реБрдХрдЕрдк рд▓рд╛рдЧрдд O(1).

рдПрд░реЗ рдмрдирд╛рдо рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛

рдХрд┐рди рдПрд░реЗ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реНрдиреЗ?

рд╣рдореНрдо, рд░рд╛рдореНрд░реЛ рдкреНрд░рд╢реНрдиред

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

рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВ рд▓реЗрдЦ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ Javaрд╣рд╢рдореНрдпрд╛рдк, рдЬреБрди рд╣реНрдпрд╛рд╕ рддрд╛рд▓рд┐рдХрд╛рдХреЛ рдХреБрд╢рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ; рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕ рд▓реЗрдЦрдорд╛ рд╕рдореЗрдЯрд┐рдПрдХрд╛ рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рдмреБрдЭреНрди рдЬрд╛рднрд╛ рдмреБрдЭреНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди