рдПрд▓реНрдЧреЛрд░рд┐рдердо рдЬрдЯрд┐рд▓рддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдкрд░рд┐рдЪрдп (рднрд╛рдЧ 4)

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

рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд:
рднрд╛рдЧ 1
рднрд╛рдЧ реи
рднрд╛рдЧ рей

рдЗрд╖реНрдЯрддрдо рдЫрдБрдЯрд╛рдИ


рдмрдзрд╛рдИ! рдЕрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд╕рдордорд┐рдд рдЕрдиреБрдорд╛рди рдФрд░ рд╕рдВрдХреЗрддрди "рдмрд┐рдЧ-рдУ" рдХреНрдпрд╛ рд╣реИред рдЖрдк рдпрд╣ рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ O( 1 ) , O( log( n ) ) , O( n ) , O( n 2 ) рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╣реИред рдЖрдк o , o , familiar, ╬Ш , ╬Ш рдФрд░ "рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рдЖрддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░реЗ рд▓реЗрдЦ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред

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

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

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд░реНрдЬ рдкреНрд░рдХрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рд╣рдореЗрдВ рдПрдХ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕реЗ merge рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рджреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рд▓реЗрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ (рднреА рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП) рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ:

 def merge( A, B ): if empty( A ): return B if empty( B ): return A if A[ 0 ] < B[ 0 ]: return concat( A[ 0 ], merge( A[ 1...A_n ], B ) ) else: return concat( B[ 0 ], merge( A, B[ 1...B_n ] ) ) 

concat рдлрд╝рдВрдХреНрд╢рди рдПрдХ рддрддреНрд╡ ("рд╣реЗрдб") рдФрд░ рдПрдХ рдПрд░реЗ ("рдЯреЗрд▓") рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЙрдиреНрдХреИрдЯ рдХрд░рддрд╛ рд╣реИ, рд╢реЗрд╖ рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ "рд╣реЗрдб" рдкрд╣рд▓реЗ рддрддреНрд╡ рдФрд░ рдПрдХ "рдЯреЗрд▓" рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдирдпрд╛ рдПрд░реЗ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, concat( 3, [ 4, 5, 6 ] ) [ 3, 4, 5, 6 ] рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛ред рд╣рдо рдХреНрд░рдорд╢рдГ A рдФрд░ B рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП A_n рдФрд░ B_n рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд╡реНрдпрд╛рдпрд╛рдо 8
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджреЗрддрд╛ рд╣реИред рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрдЬрд╛рдп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ (рд▓реВрдк рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВред


рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп ╬Ш( n ) , рдЬрд╣рд╛рдВ n рдкрд░рд┐рдгрд╛рдореА рд╕рд░рдгреА рдХреА рд▓рдВрдмрд╛рдИ ( n = A_n + B_n ) рд╣реИред

рд╡реНрдпрд╛рдпрд╛рдо реп
рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ merge рд░рди рдЯрд╛рдЗрдо run ╬Ш( n ) ред


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

 def mergeSort( A, n ): if n = 1: return A # it is already sorted middle = floor( n / 2 ) leftHalf = A[ 1...middle ] rightHalf = A[ ( middle + 1 )...n ] return merge( mergeSort( leftHalf, middle ), mergeSort( rightHalf, n - middle ) ) 

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдордЭрдирд╛ рдХрдард┐рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓рд╛ рдЕрднреНрдпрд╛рд╕ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

рд╡реНрдпрд╛рдпрд╛рдо резреж
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ mergeSort рд╕рд╣реА рд╣реИ (рдпрд╛рдиреА рдЬрд╛рдБрдЪ рд▓реЗрдВ рдХрд┐ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрд╕ рдкрд░ рджрд┐рдП рдЧрдП рд╕рд░рдгреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ)ред рдпрджрд┐ рдЖрдк рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд╣рд▓ рдХрд░реЗрдВред рдЙрд╕реА рд╕рдордп, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ рдХрд┐ leftHalf рдФрд░ rightHalf рд╕реЗ rightHalf рдореЗрдВ рдмрд╛рдВрдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдмреАрдЪ рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ (рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ floor рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред


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

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

рдЫрд╡рд┐

рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрдХрд▓ mergeSort рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рд╕рд░реНрдХрд▓ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрд░реЗ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╢реАрд░реНрд╖ рдиреАрд▓рд╛ рд╡реГрддреНрдд рдЖрдХрд╛рд░ n рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП mergeSort рдХрд░рдиреЗ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрд▓ рд╣реИред рдПрд░реЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдмреАрдЪ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХреЙрд▓ рджрд┐рдЦрд╛рддрд╛ рд╣реИред mergeSort рдХрд░рдиреЗ рдХреА рдореВрд▓ рдХреЙрд▓ рджреЛ рдирдП рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ n / 2 рдЖрдХрд╛рд░ рдореЗрдВред рдмрджрд▓реЗ рдореЗрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ n / 4 рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рдФрд░ рдХреЙрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЬрдм рддрдХ рд╣рдореЗрдВ рдПрдХ рдЖрдХрд╛рд░ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред 1. рдЗрд╕ рдЖрд░реЗрдЦ рдХреЛ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреЗрдбрд╝ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреЗрдбрд╝ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЬрдбрд╝ рдХреЗ рд╕рд╛рде рдПрдХ рдкреЗрдбрд╝ рдХреЗ рдЙрд▓рдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рддрд▓ рдкрд░ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ)ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ n рдмрд░рд╛рдмрд░ рд░рд╣рддреА рд╣реИред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рд┐рдВрдЧ рдиреЛрдб merge рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдиреЛрдбреНрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд▓рд╛рд▓ рдиреЛрдб n / 2 рдЖрдЗрдЯрдо рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ n / 2 рд╕рд░рдгреА рдХреЛ n / 4 рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕рд╛рде рдкреБрди: mergeSort (рдЧреНрд░реАрди рдиреЛрдбреНрд╕) рдХрд╣рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЖрдХрд╛рд░ n / 2 рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдирддреАрдЬрддрди, рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреА рдЬрдЯрд┐рд▓рддрд╛ ╬Ш( n ) ред рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд░реЗрдЦрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЬрд┐рд╕реЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡реГрдХреНрд╖ рдХреА рдЧрд╣рд░рд╛рдИ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, log( n ) ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╡рд╣реА рддрд░реНрдХ рд╣реИрдВ рдЬреЛ рд╣рдордиреЗ рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдереЗред рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ log( n ) рдЬрдЯрд┐рд▓рддрд╛рдПрдВ ╬Ш( n ) , рдЗрд╕рд▓рд┐рдП, mergeSort рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЬрдЯрд┐рд▓рддрд╛: ╬Ш( n * log( n ) ) ред рдпрд╣ ╬Ш( n 2 ) рд╕реЗ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдкрд╕рдВрдж рджреНрд╡рд╛рд░рд╛ рдЫрд╛рдВрдЯрдирд╛ рд╣рдореЗрдВ рджреЗрддрд╛ рд╣реИ (рдпрд╛рдж рд░рдЦреЗрдВ, log( n ) рдмрд╣реБрдд рдХрдо рд╣реИ, рдЗрд╕рд▓рд┐рдП n * log( n ) рднреА n * n = n 2 ) рд╕реЗ рдмрд╣реБрдд рдХрдо рд╣реИ)ред

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

рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХрд╛ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рдЖрдкрдХреЛ рддреЗрдЬреА рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдиреЗ рдФрд░ рдЙрди рдЪреАрдЬреЛрдВ рдкрд░ рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрддрд┐ рдкрд░ рдмрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╕рднреА рдорд┐рд▓рдХрд░ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдЖрд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдЧрдгрд┐рддреАрдп рднрд╛рд╖рд╛ рдФрд░ рдЕрдВрдХрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдмрдбрд╝рд╛ рдУ") рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬрдм рдЕрдиреНрдп рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдЕрдзрд┐рдЧреНрд░рд╣рд┐рдд рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЬреНрдЮрд╛рдиред

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рдпрд╣ рд▓реЗрдЦ рдХреНрд░рд┐рдПрдЯрд┐рд╡ рдХреЙрдордиреНрд╕ 3.0 рдПрдЯреНрд░реАрдмреНрдпреВрд╢рди рдХреЗ рддрд╣рдд рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╛рда рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рдЖрдк рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдмрд╕ рдореЗрд░рд╛ рдирд╛рдо рдмрддрд╛рдирд╛ рди рднреВрд▓реЗрдВред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ: рдпрджрд┐ рдЖрдк рдЗрд╕ рдкрд╛рда рдкрд░ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдЖрдзрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрд╕реЗ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рд╕рд╣рдпреЛрдЧ рдФрд░ рд╕реВрдЪрдирд╛ рдХреЗ рдкреНрд░рд╕рд╛рд░ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдПрдЯрд┐рд╡ рдХреЙрдордиреНрд╕ рдХреЗ рддрд╣рдд рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВред

рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рд╕рдВрджрд░реНрдн


  1. рдХреЙрд░реНрдореЗрди, рд▓рд┐рд╕реЗрд░реНрд╕рди, рд░рд┐рд╡реЗрд╕реНрдЯ, рд╕реНрдЯреАрдиред рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдкрд░рд┐рдЪрдп , рдПрдордЖрдИрдЯреА рдкреНрд░реЗрд╕
  2. рджрд╛рд╕рдЧреБрдкреНрддрд╛, рдкрд╛рдкрд╛рджрд┐рдорд┐рддреНрд░рд┐рдЙ, рд╡рдЬрд╝реАрд░рд╛рдиреАред рдПрд▓реНрдЧреЛрд░рд┐рджрдо , рдореИрдХрдЧреНрд░рд╛-рд╣рд┐рд▓ рдкреНрд░реЗрд╕
  3. Fotakisред рдПрдереЗрдВрд╕ рдХреЗ рд░рд╛рд╖реНрдЯреНрд░реАрдп рддрдХрдиреАрдХреА рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдЕрд╕рддрдд рдЧрдгрд┐рдд рдХрд╛ рдХреЛрд░реНрд╕
  4. Fotakisред рдПрдереЗрдВрд╕ рдХреЗ рд░рд╛рд╖реНрдЯреНрд░реАрдп рддрдХрдиреАрдХреА рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдкрд╛рдареНрдпрдХреНрд░рдо

Source: https://habr.com/ru/post/In196226/


All Articles