рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдПрдХ рдирдпрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реЙрд░реНрдЯрд┐рдВрдЧ рд▓рд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХреЛрдИ рдПрдирд╛рд▓реЙрдЧ рдирд╣реАрдВ рджреЗрдЦрд╛ред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЕрдЧрд░ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рджреЗрдЦрд╛ред
рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЯрдХрд░рд╛рд╡ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╣реИрд╢ рдЯреЗрдмрд▓ рд╕рд░рдгреА рдкрд░ рдЬрд╛рдиреЗ рдФрд░ рдЧреИрд░-рдЦрд╛рд▓реА рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред
рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдореИрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред
рдЗрд╕рд▓рд┐рдП, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
- рдкрд╣рд▓реА рдкрд╛рд╕ рдкрд░, рд╣рдо рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ (рдП рдорд┐рди , рдП рдореИрдХреНрд╕ ) рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рдорд╛рдиреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЗ рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдорд╛рди рдкрд╛рддреЗ рд╣реИрдВред
- рджреВрд╕рд░реЗ рдкрд╛рд╕ рдореЗрдВ, рд╣рдо рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдЗрдВрдбреЗрдХреНрд╕ = ( int ) (k * (A i -A min ) * TMPLEN / (рдПрдХ рдЕрдзрд┐рдХрддрдо - рдиреНрдпреВрдирддрдо ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реБрдП рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
- рддреАрд╕рд░реЗ рдкрд╛рд╕ рдкрд░, рд╣рдо рд╣реИрд╢ рдЯреЗрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдореВрд▓ рд╕рд░рдгреА рдореЗрдВ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВред
рдЯрдХрд░рд╛рд╡реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╕реНрдд рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝реЗрдВ (рдпрджрд┐ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рдорд╛рди <= рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рджрд╛рд╣рд┐рдиреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ (рдкрд╣рд▓реЗ рдореБрдХреНрдд рд╕реЗрд▓ рдореЗрдВ) рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдореВрд▓реНрдп рдЕрдзрд┐рдХ рд╣реИред
рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд╛рдпреА рд╕рд░рдгреА рдореВрд▓ рд╕рд░рдгреА рд╕реЗ 2-3 рдЧреБрдирд╛ рдмрдбрд╝реА рд╣реИред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдЯрдХрд░рд╛рд╡ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдирд╛ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдХреЗрд╡рд▓ рдПрдХ рд╢рд┐рдлреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рддреБрд▓рдирд╛ рдФрд░ рдЧрдгрдирд╛ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╡рд░реНрдЧ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИред
рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛
рдУ (рдПрди * рд▓реЙрдЧ рдПрди) рд╕реЗ рд╣реЛрддреА рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ
рдУ (рдПрди * рдПрди) рдореЗрдВ
рдУ (рдПрди * рдПрди) рдХреЗ рддреНрд╡рд░рд┐рдд рдЫрдВрдЯрд╛рдИ рд╡рд╛рд▓реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╕рдордпред рдпрджрд┐ рдЖрдк рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рдорд╛рд▓рд┐рдХ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд╛рдкрд╕ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдкрд╣рд▓реЗ рд╣реА рд╕рдм рдХреБрдЫ рднреВрд▓ рдЪреБрдХрд╛ рд╣реВрдВред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред
рдПрдХ рд╕рдорд╛рди рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рддреНрд╡рд░рд┐рдд рдЫрдВрдЯрд╛рдИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 20-25% рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдореЗрдореЛрд░реА рдУрд╡рд░рд╣реЗрдб
O (n) рд╣реИ ред
рддреНрд╡рд░рд┐рдд рдЫрдБрдЯрд╛рдИ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╣реБрдд рдиреАрдЪрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯрдХрд░рд╛рд╡реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рд▓рдп рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди (500 рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдмреНрд▓реЙрдХ рдХрд░рдирд╛), рдореИрдВрдиреЗ рддреНрд╡рд░рд┐рдд рд╡рд┐рд▓рдп рдХреЗ рд╕рд╛рде рддреБрд▓рдиреАрдп рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдФрд░ рд╢реБрджреНрдз рд╡рд┐рд▓рдп рд╕реЗ рдЕрдзрд┐рдХред
рдлрд╛рдпрджреЗ:
- рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ (рдЧреИрд░-рдкреБрдирд░рд╛рд╡рд░реНрддреА рдмреНрд▓реЙрдХ рд╡рд┐рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп);
- рддреНрд╡рд░рд┐рдд рдЫрдБрдЯрд╛рдИ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди;
- рдпрджрд┐ рд╡рд┐рддрд░рдг рдЬреНрдЮрд╛рдд рд╣реИ, рддреЛ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рднрд░рдиреЗ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдиреБрдХрд╕рд╛рди:
- рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реНрдореГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ;
- рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╢реНрд░реЗрдгреА рдореЗрдВ рдпрд╛ рдмрд╣реБрдд рдЕрд╕рдорд╛рди рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рде, рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдХрд╛рджрдорд┐рдХ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рджреБрдЦ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдЬрд╛рд╡рд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕реНрд░реЛрдд рдХреЛрдбред
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдореЛрдб рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк SORTBLOCK = SOURCELEN рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╢реБрджреНрдз рд╣реИрд╢рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред MIN_VAL рдФрд░ MAX_VAL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрдм SOURCELEN <300, рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдХрдВрд╕реЛрд▓ рдкрд░ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИред рд╕рд░рдгреА рдореЗрдВ рд░рд┐рдХреНрдд рдорд╛рди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╢реВрдиреНрдп рдХреЛ рдЪреБрдирд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реАрдорд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдФрд░ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд░реЗрдЧрд╛ред рдЬрдм рд╕рдордп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдврд╛рдВрдЪреЗ рдкрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╕рд╣рдХрд░реНрдореА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред
import java.util.Arrays; import java.util.Date; import java.util.Random; public class HashSort {