
рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рд░рдгреА рдЫрдБрдЯрд╛рдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ:
- рдУ (рдПрди * рд▓реЙрдЧ (рдПрди)) рд╕рдВрдЪрд╛рд▓рди (рдПрдХреНрд╕рдЪреЗрдВрдЬ рдФрд░ рддреБрд▓рдирд╛) рдХреЗ рд▓рд┐рдП рдЧрд╛рд░рдВрдЯреАрдХреГрдд рдХрд╛рдо рдХрд░реЗрдЧрд╛;
- рдУ (1) рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА;
- рдпрд╣ рд╕реНрдерд┐рд░ рд╣реЛрдЧрд╛ (рдЕрд░реНрдерд╛рдд, рдпрд╣ рдПрдХ рд╣реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ)
рддрдм рдЖрдкрдХреЛ рдЗрди рддреАрди рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рджреЛ рдмрд┐рдВрджреБ рддрдХ рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рд░рдЦрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЬрд╛рдПрдЧреАред рдФрд░, рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╛ рддреЛ
рдорд░реНрдЬ рд╕реЙрд░реНрдЯ (рдУ (рдПрди) рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ), рдпрд╛
рдкрд┐рд░рд╛рдорд┐рдбрд▓ рд╕реЙрд░реНрдЯ (рдЕрд╕реНрдерд┐рд░), рдпрд╛
рдмрдмрд▓ рд╕реЙрд░реНрдЯ (рдУ (рдПрди
2 рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)) рдорд┐рд▓реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк O (рд▓реЙрдЧ (N)) ("рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП") рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдХрдордЬрд╝реЛрд░ рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рд▓рд┐рдП
рдЬрдЯрд┐рд▓рддрд╛ O (N * (log (N) 2 )) рдХреЗ рд╕рд╛рде рдПрдХ
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ - рдмрд▓реНрдХрд┐ рдмрд╣реБрдд рдХрдо рдЬреНрдЮрд╛рдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд┐рдзрд┐ рдПрд╕рдЯреАрдбреА :: static_sort ()ред
рдпрд╣ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рдкрд░ рдХрд┐ рдХреНрдпрд╛ рддреАрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдмрд╣реБрдордд рдХрд╣реЗрдЧрд╛ "рд╢рд╛рдпрдж рд╣реА"ред рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдРрд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рдмреАрдЪ рдЕрдлрд╡рд╛рд╣реЗрдВ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИред рдХреБрдЫ рд▓реЛрдЧ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ "рд╕реНрдерд┐рд░ рдХреНрд╡рд┐рдХреЙрд░реНрдЯреЛрд░реНрдЯ" рд╣реИ - рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦрд╛, рдЙрд╕рдореЗрдВ рдПрдХ рд╣реА рдУ (рдПрди * (рд▓реЙрдЧ (рдПрди)
2 ) (рдЯрд╛рдЗрдорд░) рдЬрдЯрд┐рд▓рддрд╛ рдереАред рдФрд░ рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдкрд░ рдПрдХ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ред
рдИ.рдкреВ. рд╣реБрдЖрдВрдЧ рдФрд░ рдПрдордП рд▓реИрдВрдЧрд╕реНрдЯрди рдХреЗ рд▓реЗрдЦ, рдлрд╛рд╕реНрдЯ рд╕реНрдЯреЗрдмрд▓ рдорд░реНрдЬрд┐рдВрдЧ рдФрд░ рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ рдПрдХреНрд╕реНрдЯреНрд░рд╛ рд╕реНрдкреЗрд╕ рдореЗрдВ рдЫрдВрдЯрдиреА (1989-1992) , рдЬреЛ рддреАрдиреЛрдВ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдЦрдХреЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣реИ, рдФрд░
1974 рдХреЗ
рдПрд▓ рд╕реНрдкреЗрд╕рдмрд░реНрдбреЛ, рд╕реНрдерд┐рд░ рдЫрдБрдЯрд╛рдИ рдФрд░ рд╕рдордп рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдХреЗ рдХрд╛рдо рдХреЛ рджреЗрдЦреЗрдВред рдпрд╣ рд╕реНрдХреИрди рдХрд┐рдП рдЧрдП рдкрд╛рда рдХреЗ рд▓рдЧрднрдЧ 80 рдкреГрд╖реНрда рд╣реИрдВ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреАред
рдореБрдЭреЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╣реБрдЖрдВрдЧ рдФрд░ рд▓реИрдВрдЧрд╕реНрдЯрди рдХреЗ рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЙрд╕ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╡рд░реНрдгрд┐рдд рд╣реИред рдЦрдВрдб рек.рей рдореЗрдВ рд╡реЗ рдЬрд┐рд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐
"рдпрд╣ рд╣реИ, рдпрд╣ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рджреВрд╕рд░реА-рд╕рдмрд▓рд┐рд╕реНрдЯ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рдмрд╕реЗ рджрд╛рд╣рд┐рдиреЗ рдмреНрд▓реЙрдХ рдХрд╛ рд╕рд┐рд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕рдХреА рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдЧрд╛ред" рд╕рд╣реА тАЭ рд╣рдореЗрд╢рд╛ рд╕рдЪ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреБрдЫ рдмрд╛рдж рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдореИрдВ рдЗрд╕ рдореБрд╕реАрдмрдд рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХрд╛ рдПрдХ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рдФрд░ рдЕрдм рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬреЛ рд╕рднреА рддреАрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ...
рдореВрд▓ рд╕рдВрдЪрд╛рд▓рди
рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- SWAP1 (рдП, рдмреА) - рджреЛ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрд╡реИрдк рдХрд░реЗрдВред рдХрдард┐рдирд╛рдИ 1 рд╣реИред
- SWAPN (A, B, K) - рд╕рд░рдгрд┐рдпреЛрдВ A рдФрд░ B рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕реНрд╡реИрдк K рдЬреЛрдбрд╝реЗред рдЬрдЯрд┐рд▓рддрд╛ K рд╣реИред
- ROTATE (A, K, L) - рд╕рд░рдгреА A рдХреЗ рджреЛ рд▓рдЧрд╛рддрд╛рд░ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ, рдкрд╣рд▓реЗ рдХреА рд▓рдВрдмрд╛рдИ K рд╣реИ, рджреВрд╕рд░реЗ рдХреА рд▓рдВрдмрд╛рдИ L рд╣реИред рдЬрдЯрд┐рд▓рддрд╛ K + L рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред
- BinSearchLeft (X, A, L) - рдПрдХ рдПрд▓рд┐рдореЗрдВрдЯ рдПрдХреНрд╕ рдореЗрдВ рдПрдХ рдПрд▓рд┐рдореЗрдВрдЯ рдПрдХреНрд╕рд░реЗ рдХреЛ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдХрд╛ рд╕реНрдерд╛рди рдЬреНрдЮрд╛рдд рдХрд░реЗрдВред L рдХреА рд╡реИрдзрддрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо 0 рд╕реЗ L рддрдХ рд╣реИрдВред рдХрдард┐рдирд╛рдИ рд▓реЙрдЧ (L) рд╣реИред
- BinSearchRight (X, A, L) - рдХрд┐рд╕реА рддрддреНрд╡ X рдХреЛ рд▓рдВрдмрд╛рдИ L рдХреЗ рдХреНрд░рдо рдореЗрдВ рджрд┐рдП рдЧрдП рдП рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд╣реА рдЬрдЧрд╣ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдорд╛рдиреНрдп рдорд╛рди 0 рд╕реЗ L рддрдХ рд╣реИрдВред рдХрдард┐рдирд╛рдИ рд▓реЙрдЧ (L) рд╣реИред
рд╣рдо рд╡рд┐рдирд┐рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдкрд╣рд▓реЗ рдереЛрдбрд╝реА рд╢рдмреНрджрд╛рд╡рд▓реАред
рдЙрди рддрддреНрд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рддреБрд▓рдирд╛рддреНрдордХ рдлрд╝рдВрдХреНрд╢рди рдиреЗ рдкрд░рд┐рдгрд╛рдо рджрд┐рдпрд╛ рдХрд┐ рд╡реЗ рд╕рдорд╛рди рд╣реИрдВ, рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ "рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдХреБрдВрдЬреА рд╣реИ", рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рдХреБрдВрдЬреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЖрдк рд╕рд░рдгреА рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреБрдВрдЬреА рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд░рдгреА рдХреЗ рджреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд╕рдорддреБрд▓реНрдп рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЙрдирдореЗрдВ рд╕рдорд╛рди рдХреБрдВрдЬрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рддрддреНрд╡ рд╕рдорд╛рди рдХреНрд░рдо рдореЗрдВ рд╣реЛрдВред рд╕реНрдерд┐рд░ рдЗрди-рдкреНрд▓реЗрд╕ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╕рдорд╛рдирддрд╛ рдЦреЛрдирд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИред
рд╕рд░рдгреА рдХреА рд▓рдВрдмрд╛рдИ Nред рдпрджрд┐ N <16 рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд░рдгреА рдХреЛ рд╕реЙрд░реНрдЯ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдмрд▓реНрдХрд┐ рдЖрд╡реЗрд╖рдг рдХреЗ рд╕рд╛рде рдХреЙрд▓рд┐рдВрдЧ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ - рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
Sqrt (N) рдХреЗ рдХрд░реАрдм рджреЛ рдХреА рд╢рдХреНрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╕рдВрдЦреНрдпрд╛ S рдЪреБрдиреЗрдВред рд╣рдо K = [N / S] рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ K + S рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝реАрджрд╛рд░ рд╡рд┐рднрд┐рдиреНрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдХреЗ рд╕рдмрд╕реЗ рдмрд╛рдПрдВ рддрддреНрд╡ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд░рдгреА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдРрд╕реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ (рд╢реЗрд╖ рддрддреНрд╡реЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП), рддреЛ рд╕рдорддреБрд▓реНрдпрддрд╛ рдЯреВрдЯ рдирд╣реАрдВ рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдПрдХ рдЬрдЧрд╣ рджреЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд╣рдо рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рддрддреНрд╡реЛрдВ рдХреА рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд╛ рдФрд░ рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЦреЛрдЬ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рд╕рд░рдгреА рдХреЗ рдирд┐рд░рдВрддрд░ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдкрд╛рдИ рдЧрдИ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд░рдЦреЗрдВрдЧреЗ, рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдПрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдирдИ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдорд┐рд▓рддреА рд╣реИрдВ: рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрдВрдЯрдиреА, рд╣рдо рдЙрдиреНрд╣реЗрдВ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рдорд┐рд▓реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдЦреЛрдЬреЗрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдирд╣реАрдВ рдвреВрдВрдврддреЗ рд╣реИрдВ, рддреЛ рд╕рд░рдгреА рдХреЛ рдПрдХ рдореЗрдВ рд░реЛрдЯреЗрдЯ рдХреЗ рд╕рд╛рде рдлрд┐рдЯ рдХрд░реЗрдВред рдкрд╛рдпрд╛ рддрддреНрд╡ рдХреА рдЪрд╛рдмрд┐рдпрд╛рдБ, рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП - рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдирдП рддрддреНрд╡ рдХреЛ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд░рдЦреЗрдВред
рдХреБрдВрдЬреА рдХреЛ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЬрд╛рдБрдЪ рдХрд╛ рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрджрд╛ рддрддреНрд╡ рдХреЗ рд╕рдорд╛рди рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИред рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЦрдВрдб рдХреЗ рдЪрд╛рд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдЪрд░рдг рдХреА рдЬрдЯрд┐рд▓рддрд╛, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрди * рд▓реЙрдЧ (рдПрдирдХреЗрдИ) рддреБрд▓рдирд╛ рдФрд░ 2 * рдПрди + рдПрдирдХреЗрдИ рдХреЗ
2 рдЪрд░рдгреЛрдВ рдХреА рд╣реИред NKeys рдХреЗ рдмрд╛рдж рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ 2 * sqrt (N) рд╣реИрдВ, рдЕрдм рддрдХ рд╣рдо рд╡рд┐рджреЗрд╢ рдирд╣реАрдВ рдЧрдП рд╣реИрдВред
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдпрд╛ рддреЛ рд╣рдореЗрдВ рдСрд░реНрдбрд░ рдХрд┐рдП рдЧрдП K + S рдХреАрдЬрд╝ рдорд┐рд▓реАрдВ, рдпрд╛ рд╣рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реАрдВред рдЗрди рдорд╛рдорд▓реЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡рд┐рднрд┐рдиреНрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 4 рд╕реЗ рдХрдо рд╣реИ - рдЗрд╕рдХреЗ рд▓рд┐рдП рднреА, рдЗрд╕рдХреА рдЕрдкрдиреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
рдХреЗрд╕ рдПред рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд╛рдмрд┐рдпрд╛рдБ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд░рдгреА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХрддреНрд░ рдХреА рдЧрдИ рд╡рд┐рднрд┐рдиреНрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ K + S рд╣реИрдВред рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓реЗ K рдХреЛ "рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА" рдШреЛрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдм рд╣рдо рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╢реЗрд╖ S рдорд░реНрдЬ рдмрдлрд░ рд╣реЛрдЧрд╛ред рдореВрд▓ рд╕рд░рдгреА рдХреЗ рд╕рднреА рд╢реЗрд╖ рддрддреНрд╡ "рдбреЗрдЯрд╛" рд╣реИрдВ, рдЕрдм рд╡реЗ рд╕рд░рдгреА рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣реИрдВред
A.1ред рдХреНрд▓рд╛рд╕рд┐рдХ рдорд░реНрдЬ рд╕реЙрд░реНрдЯ рдЪрд░рдгред
рд╣рдо рджреЛ рдФрд░ рдХрд╛рд░реНрдп рд▓рд┐рдЦреЗрдВрдЧреЗред рдПрдХ рдХреЛ MergeLeft, рджреВрд╕рд░реЗ рдХреЛ MergeRight рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рд╡реЗ рддреАрди рднрд╛рдЧреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЦрд┐рд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред MergeLeft рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд▓рдВрдмрд╛рдИ P рдХрд╛ рдПрдХ рдмрдлрд░ рд╣реИ, рд▓рдВрдмрд╛рдИ Q рдХрд╛ рдПрдХ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЯреБрдХрдбрд╝рд╛, рдФрд░ рд▓рдВрдмрд╛рдИ R рдХрд╛ рдПрдХ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЯреБрдХрдбрд╝рд╛, рдЬрд╣рд╛рдВ SтЙеR рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдорд░реНрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбрд╛рд▓ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдЕрдВрдд рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдореЗрдВ рдмрдлрд░ рддрддреНрд╡ред MergeRight рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдорд┐рд░рд░ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдЗрдирдкреБрдЯ рдкрд░ рдЗрд╕рдХреЗ рджреЛ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдмрдлрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдмрдлрд░, рдПрдХ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рдХреЗ рдмрд╛рджред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ Q + R рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ - рджреЛрдиреЛрдВ рддреБрд▓рдирд╛рдУрдВ рдореЗрдВ рдФрд░ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдореЗрдВред
MergeLeft рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдкрд╣рд▓реЗ рдЬреЛрдбрд╝реЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЪреМрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ ... рд▓рдВрдмрд╛рдИ рдХреЗ рдЯреБрдХрдбрд╝реЗ рддрдХ рдПрд╕ (рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдПрд╕ рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реИ)ред рд╣рд░ рдмрд╛рд░ рдЬрдм рдПрдо рддрддреНрд╡реЛрдВ рдХреЛ рдЫрд╛рдВрдЯрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд▓рдВрдмрд╛рдИ рдПрдо / 2 рдХреЗ рдмрдлрд░ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд░рдгреА рдХреЗ рджрд╛рдИрдВ рдУрд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдЬреЛрдбрд╝реЗ рдХреЗ рдЪрд░рдг рдореЗрдВ, рд╣рдо рд▓рдВрдмрд╛рдИ 2 рдХреЗ рдмрдлрд░ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдЬрдм рддрдХ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рд▓рдВрдмрд╛рдИ рдПрд╕ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ, рддрдм рддрдХ рдбреЗрдЯрд╛ рд╕рд░рдгреА рдмрд╛рдИрдВ рдУрд░ рджрдмрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдмрдлрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдПрд╕ рджрд╛рдИрдВ рдУрд░ рд╣реЛрдЧрд╛ред рдЕрдм рд╣рдо рдорд░реНрдЬрд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, 2 * рдПрд╕ рд▓рдВрдмрд╛рдИ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЫрд╛рдВрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдмрдлрд░ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

.2ред рдмреНрд▓реЙрдХ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдЪрд░рдгред
рдЕрдм рд╣рдордиреЗ рд▓рдВрдмрд╛рдИ G = 2 * S рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЫрд╛рдВрдЯреЗ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝реЗ рдореЗрдВ, рдлрд┐рд░ рдЬреЛрдбрд╝реЗ рдореЗрдВ, рдЖрджрд┐ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджреЗрдВрдЧреЗ, рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдкреВрд░реЗ рдбреЗрдЯрд╛ рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓рдВрдмрд╛рдИ S рдХреА рдПрдХ рдмрдлрд░ рдФрд░ рд▓рдВрдмрд╛рдИ K рдХреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╣реИ, рдЬрд╣рд╛рдВ K / L / S (L рдбреЗрдЯрд╛ рд╕рд░рдгреА рдХреА рдХреБрд▓ рд▓рдВрдмрд╛рдИ рд╣реИ)ред
рддреЛ, рдЪрдХреНрд░ "рдЬрдмрдХрд┐ рдЬреА" рдПрд▓ "ред
рд╣рдо рд▓рдВрдмрд╛рдИ рдЬреА рдХреЗ рджреЛ рд▓рдЧрд╛рддрд╛рд░ рдЕрдВрд╢реЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рддреБрд░рдВрдд рдкрд╣рд▓реЗ рд▓рдВрдмрд╛рдИ рдПрд╕ (рдЬреА рдФрд░ рдПрд╕ рджреЛ рдХреА рд╢рдХреНрддрд┐рдпрд╛рдВ рд╣реИрдВ) рдХрд╛ рдПрдХ рдмрдлрд░ рд╣реИред рд╣рдорд╛рд░реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд▓рдВрдмрд╛рдИ рдХреЗ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред S рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░ рдЖрдиреЗ рджреЗрдВ K
рез ред рд╕рд░рдгреА рдХреЗ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рджреВрд╕рд░рд╛ рдЯреБрдХрдбрд╝рд╛ рдЬреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд▓рдВрдмрд╛рдИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рдж, рдПрдХ рдЕрдкреВрд░реНрдг рдмреНрд▓реЙрдХ рдЗрд╕рд╕реЗ рд░рд╣ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХреА рдЧрдгрдирд╛ рднреА рдХрд░реЗрдВрдЧреЗ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ)ред рдкрд╣рд▓реЗ K
1 рдХреБрдВрдЬреА рд▓реЗрдВ (рд╡реЗ рдореВрд▓ рд╕рд░рдгреА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИрдВ), рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд╡реЗрд╖рдг рджреНрд╡рд╛рд░рд╛) рдФрд░ рд╕рдВрдЦреНрдпрд╛ G / S рдХреЗ рд╕рд╛рде рдХреБрдВрдЬреА рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдпрд╛рдж рд░рдЦреЗрдВ (рдЕрдм рдпрд╣ G / S рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛) - рдЖрдЗрдП рдЗрд╕реЗ midkey рдХрд╣рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдХрд╛ рдЕрдкрдирд╛ рдмреНрд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ, рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдЕрдВрд╢реЛрдВ рдХреЛ рднреЗрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рджреВрд╕рд░реЗ, рд╕рдорд╛рди рддрддреНрд╡реЛрдВ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдо рдЙрдиреНрд╣реЗрдВ рднрдпрд╛рдирдХ рд░реВрдк рдореЗрдВ рдорд┐рд▓рд╛ рджреЗрдВрдЧреЗред
рдмреНрд▓реЙрдХ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВред рдЖрджреЗрд╢ рдкрд╣рд▓реЗ рддрддреНрд╡реЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрджрд┐ рд╡реЗ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдЗрди рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдЪрд╛рдмрд┐рдпрд╛рдБред рдПрдХрдорд╛рддреНрд░ рдкреНрд░рдХрд╛рд░ рдЬреЛ рд╣рдо рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдиреНрдпреВрдирддрдо рддрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ рдЫрдВрдЯрдиреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП K
1 рдПрдХреНрд╕рдЪреЗрдВрдЬ (рдФрд░ K
1 2/2 рддреБрд▓рдирд╛) рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рджреЛ рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдПрдХ рдорд╣рдВрдЧреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ S sqrt (N) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред , рдлрд┐рд░ рдкреВрд░рд╛ рдЫрдБрдЯрд╛рдИ рдЪрд░рдг рдУ (рдПрди) рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред рдЬрдм рд╣рдо рджреЛ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдирдХреЗ рдЕрдиреБрд░реВрдк рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдорд┐рдбрдХреА рдХреБрдВрдЬреА рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдирд╣реАрдВ рднреВрд▓рддреЗ рд╣реИрдВред рдЗрд╕ рдЫрдБрдЯрд╛рдИ рдореЗрдВ рдЕрдкреВрд░реНрдг рдмреНрд▓реЙрдХ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рд╣рдо рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ!
рдкрд╣рд▓реЗ рдЦрдВрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмреНрд▓реЙрдХ рдХреЛ рдЕрдХреНрд╖рд░ A рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рджреВрд╕рд░реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмреНрд▓реЙрдХ рдХреЛ рдЕрдХреНрд╖рд░ B рд╕реЗ рдирд┐рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдорд╛рд░реА рдЫрдБрдЯрд╛рдИ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдЕрдиреБрд░реВрдк рдмреНрд▓реЙрдХ рдХрд╛ рдХреНрд░рдо,
рд╕рдВрд░рдХреНрд╖рд┐рддред
рдПрдХ рдЕрдкреВрд░реНрдг рдмреНрд▓реЙрдХ рд╣рдореЗрд╢рд╛ рдЦрдВрдб рдмреА рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИред рд╣рдо рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХрд┐рд╕ рдмреНрд▓реЙрдХ рдХреЛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдбрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рдЬрдЧрд╣ рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ, рдЗрди рдорд╛рдорд▓реЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╣рдо рдЙрди рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдЯреБрдХрдбрд╝реЗ рдП рд╕реЗ рд╣реИрдВ)ред
рдЕрдм рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рд░ рдкрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:
- рдкрд╣рд▓реЗ рдкреВрд░реНрдг рд╡рд┐рд▓рдп рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХреЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдЖрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЕрдм рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
- рдлрд┐рд░ рдЕрдЧрд▓реЗ рдмреНрд▓реЙрдХ рдХреЗ рдХреБрдЫ (рдЯреА, рд╕рдВрднрд╡рддрдГ рдЯреА = 0) рддрддреНрд╡, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрдЧрд╣ рдореЗрдВ рд╣реИрдВред
- рдлрд┐рд░ рдПрд╕ рдмрдлрд░ рддрддреНрд╡
- рддрдм рдПрд╕рдЯреА рддрддреНрд╡ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдерд╛рди рдЕрднреА рддрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡реЗ рд╕рднреА рдПрдХ рдЯреБрдХрдбрд╝реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ - рдП рдпрд╛ рдмреА, рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реИред
- рдЖрдЧреЗ рдХрдЪреНрдЪреЗ рдмреНрд▓реЙрдХ рдЖрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рдХрд╛рд░ рд╣рдо рдорд┐рдбрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдВрдЬреА рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдпрд╣рд╛рдВ рдП // рдмреА рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЦрдВрдб рд╣реИ, рдП 1 рдЕрдзреВрд░рд╛ рдмреНрд▓реЙрдХ рд╣реИ, рдП 2, рдП 3, рдмреА 2 рдЕрдирдкреНрд░реЛрд╕реЗрд╕реНрдб рдмреНрд▓реЙрдХ рд╣реИрдВ, рдмреА 3 рдЕрдВрдд рдореЗрдВ рдЕрдзреВрд░рд╛ рдмреНрд▓реЙрдХ рд╣реИ (рдпрд╣ рдП 2 рдпрд╛ рдП 3 рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред
рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд╣реИрдВ, рдЯреА = 0, рдФрд░ рдмрдлрд░ рдХреЗ рдмрд╛рдж рдЖрдиреЗ рд╡рд╛рд▓реЗ рдПрд╕рдЯреА рддрддреНрд╡реЛрдВ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдкрд╣рд▓реА рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдЧрд▓реЗ рдмреНрд▓реЙрдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдФрд░ SmartMergeLeft рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ (рдФрд░ рдпрд╣ рдЕрдВрддрд┐рдо рдирд╣реАрдВ рд╣реИ!)ред рдорд░реНрдЬрд▓реЗрдлреНрдЯ рдХреА рддрд░рд╣, рдпрд╣ рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ рдмрдлрд░ рдФрд░ рджреЛ рдЯреБрдХрдбрд╝реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрди рдЕрдВрд╢реЛрдВ рдХрд╛ рдХреНрд░рдо рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рддрдм рд╡рд┐рд▓рдп рдХрд░рддреЗ рд╕рдордп, рд╕рдорд╛рди рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рджреВрд╕рд░реЗ рдЯреБрдХрдбрд╝реЗ рд╕реЗ рдПрдХ рддрддреНрд╡ рд▓реЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛)ред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдХреЗрд╡рд▓ рддрдм рддрдХ рдкреБрдирд░реНрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рджреЛрдиреЛрдВ рдЯреБрдХрдбрд╝реЗ рдЧреИрд░-рд░рд┐рдХреНрдд рди рд╣реЛрдВред рдЬреИрд╕реЗ рд╣реА рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕реЗ рдЕрдиреНрдп рдЯреБрдХрдбрд╝реЗ рдХреЗ рд╢реЗрд╖ рддрддреНрд╡реЛрдВ рдХреЛ рдЕрдВрдд рддрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрджрд┐ рджреВрд╕рд░рд╛ рдЯреБрдХрдбрд╝рд╛ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рдерд╛), рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВ, рдФрд░ рд╡реЗ рдХрд┐рд╕ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдереЗред
рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмреА рд╕реЗ рддрддреНрд╡ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП, рдФрд░ рдЕрдВрдд рдореЗрдВ рдП рд╕реЗ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдмрдиреЗ рд░рд╣реЗ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдмреНрд▓реЙрдХ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЕрдЧрд▓реЗ рдмреНрд▓реЙрдХ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдкрд┐рдЫрд▓реЗ рдЕрд╕рдВрд╕рд╛рдзрд┐рдд рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдмрдлрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЯреА = 0, рдФрд░ рдирдпрд╛ рдмреНрд▓реЙрдХ рдЕрдирдкреНрд░реЛрд╕реЗрд╕реНрдб рд╣реИ (рд╕реНрдерд┐рддрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреИрд╕реА рд╣реИ)ред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рддреЛ рд╣рдо рд╕реНрдорд╛рд░реНрдЯрдорд░реНрд▓реАрдЯреЗрдлрд╝реНрдЯ рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕реНрд╡рдпрдВ рдХрд░рддреА рд╣реИ - рдРрд╕реЗ рддрддреНрд╡ рдЬреЛ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЕрдирдкреНрд░реЛрд╕реЗрд╕реНрдб рд╣реЛрдВрдЧреЗред
рддреЛ, рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрдВрдЯрдиреА, рд╣рдо рдпрд╛ рддреЛ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ рдпрд╛ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЬрд╣рд╛рдВ рдЦрдВрдб рдмреА рдХреЗ рдЕрдВрдд рд╕реЗ рдЕрдзреВрд░рд╛ рдмреНрд▓реЙрдХ рдЦрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред
рдпрд╛ рдЕрдВрддрд┐рдо рд╢реЗрд╖ рдХрдЪреНрдЪреЗ рддрддреНрд╡ рдЦрдВрдб рдмреА рд╕реЗ рд╣реИрдВред рдлрд┐рд░ рдЗрдирдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдмреНрд▓реЙрдХ рдП рд╕реЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ), рдФрд░ рд╣рдо рдмрдлрд░ рдХреЗ рд╕рд╛рде рдХрдЪреНрдЪреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╛ рдпреЗ рддрддреНрд╡ рдЦрдВрдб рдП рд╕реЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЙрдирдХреЗ рдмрд╛рдж (рдлрд┐рд░ рд╕реЗ, рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдкреЗрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рдорд┐рд▓рддреА рд╣реИ - рдмрдлрд░, рдЯреБрдХрдбрд╝рд╛ рдП рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЗ рдмрд╛рдж, рдлрд┐рд░ рдЯреБрдХрдбрд╝реЗ рдмреА рд╕реЗ рдПрд╕ рддрддреНрд╡реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВред рдорд░реНрдЬрд▓реЗрдлреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕реНрдерд┐рддрд┐ред рд╣рдо рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ - рдФрд░ рдЯреБрдХрдбрд╝реЗ рд╡рд┐рд▓рдп рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдмрдлрд░ рдЙрдирдХреЗ рдмрд╛рдж рд╣реИред
рдЬрдм рддрдХ рд╣рдо рдбреЗрдЯрд╛ рд╕рд░рдгреА рдХреЗ рдЕрдВрдд рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ, рддрдм рддрдХ рд╣рдо рд▓рдВрдмрд╛рдИ G рдХреЗ рд╕рднреА рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдПрд╕ рддрддреНрд╡реЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдмрдлрд░ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ), рдФрд░ рдПрд╕ рдХреЗ рдореВрд▓реНрдп рдХреЛ рджреЛрдЧреБрдирд╛ рдХрд░рддреЗ рд╣реИрдВред
рдЪрдХреНрд░ рдХрд╛ рдЕрдВрддред
A.3ред рд╕рдорд╛рдкрдиред
рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рд░рдгреА рдорд┐рд▓рд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд╣рд▓реЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдорд┐рд▓реА рдЪрд╛рдмрд┐рдпрд╛рдБ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ (рдлрд┐рд░ рдЖрд╡реЗрд╖рдг рдХреЗ рд╕рд╛рде), рдФрд░ рд╣рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рджреЛ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред
MergeWithoutBuffer рдлрд╝рдВрдХреНрд╢рди рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдВрдмрд╛рдИ P рдФрд░ Q рдХреЗ рджреЛ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП P <Qред рдЬрдмрдХрд┐ рдкрд╣рд▓реЗ рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡ рджреВрд╕рд░реЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рд╕реЗ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЯреБрдХрдбрд╝реЗ рдХреЛ рджрд╛рдИрдВ рдУрд░ рд╢рд┐рдлреНрдЯ рдХрд░рддреЗ рд╣реБрдП рдкреА рдХреЛ 1 рд╕реЗ рдХрдо рдХрд░ рджреЗрдВрдЧреЗред рдпрджрд┐ рдкреА рд╢реВрдиреНрдп рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЬреАрдд рдЧрдПред рдЕрдиреНрдпрдерд╛, BinSearchLeft рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рджреВрд╕рд░реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдкрд╣рд▓реЗ рддрддреНрд╡ k рдХреА рд╕рд╣реА рд╕реНрдерд┐рддрд┐ k рдкрд╛рдПрдВрдЧреЗ, рдФрд░ ROTATE рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рдЯреБрдХрдбрд╝реЗ рдФрд░ рджреВрд╕рд░реЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдкрд╣рд▓реЗ k рддрддреНрд╡реЛрдВ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗред Q рд╕реЗ k рдШрдЯрд╛рдПрдВ, рдЕрдВрд╢реЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВред рдпрджрд┐ рдХреНрдпреВ рд╢реВрдиреНрдп рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ - рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╣рдо рдЗрд╕реЗ рд╢реБрд░реВ рд╕реЗ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреА рдЬрдЯрд┐рд▓рддрд╛ P ^ 2 + Q рд╣реИред рдпрджрд┐ рд╕реНрд░реЛрдд P theQ рдерд╛, рддреЛ рд╣рдо рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рджрд░реНрдкрдг рдХреНрд░рдо рдореЗрдВред
рд╕реЙрд░реНрдЯ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MergeWithoutBuffer (Arr, K + S, NKS) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИред
рдХреЗрд╕ рдмреАред рдХреБрдЫ рдЕрд▓рдЧ рдЪрд╛рдмрд┐рдпрд╛рдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддреАрди рд╕реЗ рдЕрдзрд┐рдХред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрдлрд╝рд░ рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдкрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдмрджрд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдмрддрд╛ рджреЗрдВ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреАрдЬрд╝ рдореЗрдВ рдХреБрд▓ рдПрдоред рдбреЗрдиреЛрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХрддрдо рджреЛ рдбрд┐рдЧреНрд░реА рдЕрдзрд┐рдХрддрдо рдПрдо рдирд╣реАрдВ, рдФрд░ рд╣рдореЗрдВ рдХреЗ рдХреАрдЬрд╝ рд░рдЦрдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддреЗ рд╣реИрдВ (рд╡реЗ рд╕рд░рдгреА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИрдВ), рдмрд╛рдХреА рдбреЗрдЯрд╛ рдкрд░ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
B.1ред рдХреНрд▓рд╛рд╕рд┐рдХ рдорд░реНрдЬ рд╕реЙрд░реНрдЯ рдЪрд░рдгред
рдпрд╣ рдЪрд░рдг A.1 рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рд▓рдВрдмрд╛рдИ S рдХреЗ рдмрдлрд╝рд░ рдХреЗ рдмрдЬрд╛рдп рд╣рдо K рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ (рдпрд╣ рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реИ)ред рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдХреЗ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рд▓рдВрдмрд╛рдИ G = 2 * K рдХреЗ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рдорд┐рд▓рддреЗ рд╣реИрдВред
B.2ред рдмреНрд▓реЙрдХ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдЪрд░рдгред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд▓рдВрдмрд╛рдИ рдЬреА рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рд▓рдп рд╣реЛ рдЧрдП рд╣реИрдВ, рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝реЗ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрдлрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЦреБрдж рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреНрд▓реЙрдХ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ K рдХреЗ
1 = рдорд┐рдирдЯ (K, K
2 ) рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬрд╣рд╛рдВ K
2 рджреЛ рдХреЗ рдирд┐рдХрдЯрддрдо (2 * G * M)
1/3 рдХреА рд╢рдХреНрддрд┐ рд╣реИ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ M рд╡рд┐рднрд┐рдиреНрди рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рд╕рд░рдгреА рдореЗрдВ рдХреБрдВрдЬреА)ред рдмреНрд▓реЙрдХ рдХрд╛ рдЖрдХрд╛рд░ S = 2 * G / K
1 рд╣реЛрдЧрд╛ ред
рд╣рдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ A.2 рдХреА рддрд░рд╣ рд╣реА рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдмрдлрд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдЕрдм рд╣рдореЗрдВ рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдФрд░ рдмреНрд▓реЙрдХ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪрд▓реЛ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рд╕реНрдорд╛рд░реНрдЯрдорд╛рд░реНрдЯрд╡рд┐рдердЖрдЙрдЯрдмрдлрд╝рд░, рдЬреЛ рдорд░реНрдЬрд╡рд┐рдердЖрдЙрдЯрдмрдлрд╝рд░ рдФрд░ рд╕реНрдорд╛рд░реНрдЯрдорд░реНрдЧреЗрд▓реЗрдлрд╝реНрдЯ рдХрд╛ рдПрдХ рд╕рдВрдХрд░ рд╣реИред рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдЯреБрдХрдбрд╝рд╛ рджреВрд╕рд░реЗ рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИред рдпрд╣ MergeWithoutBuffer рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдХреНрд░рдо рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рддрдиреЗ рддрддреНрд╡реЛрдВ рдФрд░ рдХрд┐рд╕ рдЦрдВрдб рд╕реЗ рд╕рд░рдгреА рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрдиреЗ рд░рд╣реЗ, рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред SmartMergeLeft рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛, рдФрд░ рдЕрдВрдд рдореЗрдВ MergeLeft рдХреЗ рдмрдЬрд╛рдп MergeWithoutBuffer рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рдорд┐рд▓рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╣рдо рд╣рд╛рд░ рдЧрдП - рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмреНрд▓реЙрдХ рдХреА рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ (K = 4, G = N / 2) N / 4 рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ SmartMergeWithoutBuffer рдлрд╝рдВрдХреНрд╢рди рдХреЛ O (N ^ 2) рд╕рдВрдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдмрдЪрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд░рдгреА рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЫреЛрдЯреА рд╣реИ - рдФрд░ рд╣рдо рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ SmartMergeWithoutBuffer рдХреА рдЬрдЯрд┐рд▓рддрд╛ P * m + Q рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдБ m рдкрд╣рд▓реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдФрд░ рдЬрдм рд╕реЗ рд▓рдВрдмрд╛рдИ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд╕рднреА K / 2 рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреБрдВрдЬреА рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдпреЛрдЧ (рдПрдХ рдЧрд╣рд░реА рд╕рд╛рдВрд╕ рд▓реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдкрдврд╝реЗрдВ - рдореИрдВ рдЗрд╕реЗ рдЖрд╕рд╛рди рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ) K / 2 + M рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд▓рдВрдмрд╛рдИ рдХреЗ рджреЛ рдЯреБрдХрдбрд╝реЗ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдкрд░ G (O) рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛ рд╕рдВрдЪрд╛рд▓рдиред
B.3ред рд╕рдорд╛рдкрдиред
рдпрд╣ рдЪрд░рдг A.3 рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред
рдХреЗрд╕ рд╕реАред рддреАрди рд╕реЗ рдЕрдзрд┐рдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВред
рдпрд╣рд╛рдВ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдорд░реНрдЬ рд╕реЙрд░реНрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХреЗ рдмрд┐рдирд╛ - рд╣рдо 2 рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ 4 рддрддреНрд╡реЛрдВ рджреНрд╡рд╛рд░рд╛, рдЖрджрд┐), рдФрд░ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдорд░реНрдЬрд╡рд┐рдердЖрдЙрдЯрдмрдлрд░реНрд╕ тАЛтАЛрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕рд░рдгреА рдореЗрдВ рдХреБрдЫ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреБрдВрдЬреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╡рд┐рд▓рдп рдХреА рдЬрд╛ рд░рд╣реА рд▓рдВрдмрд╛рдИ рд╕реЗ рд░реИрдЦрд┐рдХ рд╣реЛрдЧреА, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдордЧреНрд░ рдЬрдЯрд┐рд▓рддрд╛ рд╣реЗ (рдПрди * рд▓реЙрдЧ (рдПрди)) рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмреЛрдЭрд┐рд▓ рд╣реЛ рдЧрдпрд╛ -
рд╕реА ++ рдореЗрдВ рд▓рдЧрднрдЧ 400 рд▓рд╛рдЗрдиреЗрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ - рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЪрд░ рд╡рд┐рд╡рд░рдг рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдП рдФрд░ рдмреА рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреА рдЧрддрд┐ рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдмрд╣реБрдд рд╕рд╛рд░реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд╛рдмрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдХреЗрд╕ рдП рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рд╣реИ - рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдП рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рд▓рдЧрднрдЧ 3 рдмрд╛рд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдЯрд┐рд▓рддрд╛ рдЕрдиреБрдорд╛рди рдПрди * рд▓реЙрдЧ (рдПрди) рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИред
рдмрдбрд╝реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдкрд░ (рд▓рдЧрднрдЧ 10 рдорд┐рд▓рд┐рдпрди рд╕реЗ), рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ (рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреБрдВрдЬреА рдХреА рдмрд╣реБрдд рдХрдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдЖрдЙрдЯрдкрд░рдлреЙрд░реНрдорд╕ рдЗрдирдкреНрд▓рд╛рд╕реНрдЯреЗрдмрд▓рдмреЛрд░реНрдЯ (рдПрдХ рдЬреЛ рдУ (рдПрди * рд▓реЙрдЧ (рдПрди)
2 ) рдХреЗ рдкреАрдЫреЗ рд╣реИ))ред рд▓реЗрдХрд┐рди рд╡рд╣ std :: static_sort рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ: рдХрдо рд╕реЗ рдХрдо рд╣рдореЗрд╢рд╛ рдХреБрдЫ рд╕реНрдореГрддрд┐ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ std :: stabil_sort рдЬрд▓реНрджреА рд╕реЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдорд░реНрдЬрд░реНрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдмрд┐рдирд╛ рд╢рд░реНрдд рд╕рднреА рдХреЛ рдУрд╡рд░рдЯреЗрдХ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ quicksort :) рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рддреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдХреЗрд╡рд▓ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдорд╣рддреНрд╡ рд╣реИред
рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдпрд╣ рдореМрдЬреВрдж рд╣реИ :)
рдкреБрдирд╢реНрдЪ рдкрд╣рд▓реА рддрд╕реНрд╡реАрд░
рдЖрд░ред рд╕реЗрдбрдЧреНрд╡рд┐рдХ, рдПрд▓реНрдЧреЛрд░рд┐рдердо рдФрд░ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ , рдкреНрд░рд┐рдВрд╕рдЯрди рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА, рд╕реНрдкреНрд░рд┐рдВрдЧ 2010 рдХреЗ рдПрдХ
рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рдПрдХ рд╕реНрд▓рд╛рдЗрдб
рд╣реИредрдЕрджреНрдпрддрди: рдЪрд░рдг рдмреА 2 рдХреЛ рдмрд╣реБрдд рддреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдмрдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдЬреА рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЫреЛрдЯреА рд╣реИ, рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ (рдХреЗ / 2) ^ 2> = 2 * рдЬреАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХреБрдВрдЬреА рдХреЗ рд╕реЗрдЯ рдХреЛ рдЖрдзрд╛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдзреЗ рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб (рдФрд░ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджреВрд╕рд░рд╛ рдЖрдзрд╛) рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдП 2 рд╕реЗ рддреЗрдЬ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдорд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЬреА рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрдлрд░ рдХреЗ рдмрд┐рдирд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬреЛрдВ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ, рдЬрдм рдЬреА рд╕рд░рдгреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ, рдЙрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдмрд┐рдирд╛ рдмрдлрд░ рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рд╣рдо рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ 1.61 * N * рд▓реЙрдЧ
2 рдПрди рдПрди рддреБрд▓рдирд╛ рдФрд░ 2.12 * рдПрди * рд▓реЙрдЧ
2 рдПрди рдПрдХреНрд╕рдЪреЗрдВрдЬ (NтЙд1000000 рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреБрдВрдЬреА рдХреА рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдкрд░) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред