рдШреЛрд╖рдгрд╛рддреНрдордХ рд╕реЛрдЪ

рдирдорд╕реНрддреЗ рднрдЯрдХрдирд╛ред рд╣рдо, рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдФрд░ рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдХрд╣рд╛рдБ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рдХрд╣рд╛рдБ рдЕрдиреНрдпрдерд╛, рдЬрд╣рд╛рдБ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИрдВ, рдФрд░ рдореИрдВ рдкрд╛рдардХреЛрдВ рдХреЛ рдЗрд╕ рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред


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


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


рдЦреИрд░, рдкрд░рд┐рдЪрдп рдШрд╕реАрдЯрд╛тАжред


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


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


qsort([])->[]; qsort([H|T])->qsort([X||X<-T,X<H])++[H|qsort([X||X<-T,X>=H])]. 

рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдпреЗ рднрд╛рд╡ рдореЗрд░реЗ рд▓рд┐рдП рд░реВрдЪрд┐ рдХреЗ рд╣реИрдВред


рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рдореЗрдВ рдЫрдВрдЯрдиреА рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдПрдХ рдлрд╛рдпрджрд╛ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдПрдХ рдПрд╕-рдЬрдЧрд╣-рдЬрдЧрд╣ рд╣реЛ, рдХрдо рд╕реЗ рдХрдо рдПрдХ рдлреЛрд░рдЯреНрд░рд╛рдиред рдХреНрдпрд╛ рдпрд╣ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдФрд░ рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдирдП рдорд╛рдирдХреЛрдВ рдореЗрдВ рд▓реИрдореНрдмреНрдбрд╛ рдХреЗ рд╕рднреА рд░реБрдЭрд╛рди, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рд╣реИред


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


рдореИрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХрдИ рдкреНрд░рддрд┐рдорд╛рди рд╣реИрдВ, рдФрд░ рдпрд╣ C ++ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдм рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдЯреАрдХ рдирд╣реАрдВ рд╣реИред рдЖрдк рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:


рдХреНрд░рдордмрджреНрдз 1


 def qsort(S): if S==[]:return [] H,T=S[0],S[1:] return qsort([X for X in T if X<T])+[H]+qsort([X for X in T if X>=T]) 

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


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


рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ реи


рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╕рд╛рд╣рд┐рддреНрдп рдХреА рдУрд░ рдореБрдбрд╝рдирд╛ рдкрдбрд╝рд╛, рдпрд╣ рд╣реЛрд░ рдХрд╛ рдПрдХ рдмрдпрд╛рди рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдкрд╛рдпрдерди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ:


 def quicksort(A, lo, hi): if lo < hi: p = partition(A, lo, hi) quicksort(A, lo, p - 1) quicksort(A, p + 1, hi) return A def partition(A, lo, hi): pivot = A[lo] i = lo - 1 j = hi + 1 while True do: i= i + 1 while A[i] < pivot do : j= j - 1 while A[j] > pivot if i >= j: return j A[i],A[j]=A[j],A[i] 

рдореИрдВ рд╡рд┐рдЪрд╛рд░ рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рдПрдХ рдЕрдВрддрд╣реАрди рдЪрдХреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдЬрд╛рдирд╛-рд╡рд╣рд╛рдБ рдбрд╛рд▓рд╛ рд╣реЛрдЧрд╛)), рдХреБрдЫ рдЬреЛрдХрд░ рдереЗред


рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдЕрдм рдЪрд▓реЛ рдПрдХ рд▓рдВрдмреА рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рддреЗрдЬреА рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдХреМрди рд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓реЗрдирд╛ рдЖрд╕рд╛рди рд╣реИ?
рдПрдХ рдЕрд▓рдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдирд╛, рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 def qsort(S): if S==[]:return [] H,T=S[0],S[1:] return qsort([X for X in T if X<H])+[H]+qsort([X for X in T if X>=H]) import random def test(len): list=[random.randint(-100, 100) for r in range(0,len)] from time import monotonic start = monotonic() slist=qsort(list) print('qsort='+str(monotonic() - start)) ##print(slist) 

рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдорд╛рдк рд╣реИрдВ:


 >>> test(10000) qsort=0.046999999998661224 >>> test(10000) qsort=0.0629999999946449 >>> test(10000) qsort=0.046999999998661224 >>> test(100000) qsort=4.0789999999979045 >>> test(100000) qsort=3.6560000000026776 >>> test(100000) qsort=3.7340000000040163 >>> 

рдЕрдм рдореИрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ:


 def quicksort(A, lo, hi): if lo < hi: p = partition(A, lo, hi) quicksort(A, lo, p ) quicksort(A, p + 1, hi) return A def partition(A, lo, hi): pivot = A[lo] i = lo-1 j = hi+1 while True: while True: i=i+1 if(A[i]>=pivot) or (i>=hi): break while True: j=j-1 if(A[j]<=pivot) or (j<=lo): break if i >= j: return max(j,lo) A[i],A[j]=A[j],A[i] import random def test(len): list=[random.randint(-100, 100) for r in range(0,len)] from time import monotonic start = monotonic() slist=quicksort(list,0,len-1) print('quicksort='+str(monotonic() - start)) 

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


рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрдХ рд╣реА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рд╕рдордп рдХрд╛ рдЕрдВрддрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рд╣реЛрддрд╛ рд╣реИред рд╣рдо 100 рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рдЧреНрд░рд╛рдл рдмрдирд╛рдПрдВрдЧреЗ:


 import random def test(len): t1,t2=[],[] for n in range(1,100): list=[random.randint(-100, 100) for r in range(0,len)] list2=list[:] from time import monotonic start = monotonic() slist=qsort(list) t1+=[monotonic() - start] #print('qsort='+str(monotonic() - start)) start = monotonic() slist=quicksort(list2,0,len-1) t2+=[monotonic() - start] #print('quicksort='+str(monotonic() - start)) import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ax.plot(range(1,100),t1,label='qsort') ax.plot(range(1,100),t2,label='quicksort') ax.legend() ax.grid(True) plt.show() test(10000) 

рднрд╛рдЧреЛ рд╕рдордп рд╕реЗрдХред


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


рдЦреИрд░, рд╡рд┐рдЪрд╛рд░ рдХреА рдЫрдВрдЯрд╛рдИ рдХреА рдХреНрдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрдзрд┐рдХ рд╕рдЪреЗрдд рд╣реИ?


рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рдРрд╕рд╛ рдЕрдВрддрд░ рдорд┐рд▓рддрд╛ рд╣реИред


рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдЪреНрдЪрд╛рдИ рдЕрдирд┐рд╡рд╛рд░реНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЖрдХрд░реНрд╖рдХ рдХреНрдпрд╛ рд╣реИ?


рдкреБрдирд╢реНрдЪред рдФрд░ рдпрд╣рд╛рдБ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ:


 qsort([],[]). qsort([H|T],Res):- findall(X,(member(X,T),X<H),L1), findall(X,(member(X,T),X>=H),L2), qsort(L1,S1), qsort(L2,S2), append(S1,[H|S2],Res). 

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


All Articles