рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реЙрд░реНрдЯ



рдпрджрд┐ рдЖрдк рдХреБрдЫ рд╡рд╛рдХреНрдпреЛрдВ рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд╛рд░реНрдп рдЫрдБрдЯрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ:

  1. рдЬреЛрдбрд╝реЗ рдореЗрдВ рдРрд░реЗ рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ
  2. рдпрджрд┐ рдмрд╛рдИрдВ рдУрд░ рддрддреНрд╡ * рджрд╛рдИрдВ рдУрд░ рдХреЗ рддрддреНрд╡ рд╕реЗ рдмрдбрд╝рд╛ рд╣реИ, рддреЛ рддрддреНрд╡реЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХреА рдЬрд╛рддреА рд╣реИ
  3. рд╕рд░рдгреА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рддрдХ 1-2 рдЪрд░рдг рджреЛрд╣рд░рд╛рдПрдВ

* - рдмрд╛рдИрдВ рдУрд░ рдХреЗ рддрддреНрд╡ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рддреБрд▓рдирд╛ рдХреА рдЧрдИ рдЬреЛрдбрд╝реА рд╕реЗ рддрддреНрд╡, рдЬреЛ рдХрд┐ рд╕рд░рдгреА рдХреЗ рдмрд╛рдПрдВ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдХрд░реАрдм рд╣реИред рддрджрдиреБрд╕рд╛рд░, рджрд╛рдИрдВ рдУрд░ рдХрд╛ рддрддреНрд╡ рджрд╛рд╣рд┐рдиреЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдХрд░реАрдм рд╣реИред

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

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

рд╕рд┐рд▓реА рд╕реЙрд░реНрдЯ :: рд╕реНрдЯреЛрдЧреЗ рд╕реЙрд░реНрдЯ




  1. (рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкрд░рд┐рд╡рд░реНрддрди) рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
  2. рд╣рдо рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рджреЛ-рддрд┐рд╣рд╛рдИ рд╕рдмрд░реНрд░реЗ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЗрди 2/3 рдкрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
  3. рд╣рдо рдЗрд╕рдХреЗ рдЕрдВрдд рд╕реЗ рджреЛ-рддрд┐рд╣рд╛рдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрди 2/3 рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
  4. рдФрд░ рдлрд┐рд░ рд╕реЗ, рд╣рдо рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рджреЛ-рддрд┐рд╣рд╛рдИ рд╕рдмрдбреНрд░реЗ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрди 2/3 рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдкреБрди: рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдПрдХ рд╕рдмрд░реЗ рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╕рд░рдгреА рд╣реИред рдФрд░ рдлрд┐рд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореВрд▓ рдЕрдВрд╢ рдХреЛ 2/3 рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЦрдВрдбрд┐рдд рдЦрдВрдбреЛрдВ рдХреЗ рд╕рд┐рд░реЛрдВ рдкрд░ рддреБрд▓рдирд╛ / рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрддрдГ рд╕рдм рдХреБрдЫ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИред

def stooge_rec(data, i = 0, j = None): if j is None: j = len(data) - 1 if data[j] < data[i]: data[i], data[j] = data[j], data[i] if j - i > 1: t = (j - i + 1) // 3 stooge_rec(data, i, j - t) stooge_rec(data, i + t, j) stooge_rec(data, i, j - t) return data def stooge(data): return stooge_rec(data, 0, len(data) - 1) 

рдпрд╣ рд╕реНрдХрд┐рдЬрд╝реЛрдлреНрд░реЗрдирд┐рдХ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ 100% рд╕рд╣реА рд╣реИред

рд╕реБрд╕реНрдд рдХреНрд░рдордмрджреНрдз :: рдзреАрд░реЗ рдХреНрд░рдордмрджреНрдз




рдФрд░ рдпрд╣рд╛рдБ рд╣рдо рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░рд╣рд╕реНрдпрд╡рд╛рдж рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ:

  1. рдпрджрд┐ рд╕рдмрд░реНрд░реЗ рдореЗрдВ рдПрдХ рддрддреНрд╡ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред
  2. рдпрджрд┐ рдПрдХ рд╕рдмрд░реНрд░реЗ рдореЗрдВ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЖрдзрд╛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред
  3. рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкреБрди: рдмрд╛рдПрдВ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
  4. рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рджрд╛рд╣рд┐рдиреЗ рдЖрдзреЗ рдкрд░ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
  5. рд╕рдмрд░реНрд░реЗ рдХреЗ рд╕рд┐рд░реЛрдВ рдкрд░ рддрддреНрд╡реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ (рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
  6. рд╣рдо рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреЗ рдмрд┐рдирд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдкреБрди: рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред


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

 def slow_rec(data, i, j): if i >= j: return data m = (i + j) // 2 slow_rec(data, i, m) slow_rec(data, m + 1, j) if data[m] > data[j]: data[m], data[j] = data[j], data[m] slow_rec(data, i, j - 1) def slow(data): return slow_rec(data, 0, len(data) - 1) 

рдпрд╣ рдмрдХрд╡рд╛рд╕ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░рдгреА рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреНрдпреЛрдВ StoogeSort рдФрд░ SlowSort рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ?


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

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



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

Stooge рд╕реЙрд░реНрдЯ рдореЗрдВ, рдПрдХ рд╕рдорд╛рди рдЬрд╛рджреВ рд╣реЛрддрд╛ рд╣реИ:



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

рд╣рдо рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдЧреВрдВрдЧрд╛ рдкреНрд░рдХрд╛рд░ :: рдореВрд░реНрдЦ рдкреНрд░рдХрд╛рд░




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

 def stupid(data): i, size = 1, len(data) while i < size: if data[i - 1] > data[i]: data[i - 1], data[i] = data[i], data[i - 1] i = 1 else: i += 1 return data 


рд╕реВрдХреНрддрд┐ рдкреНрд░рдХрд╛рд░ :: рд╕реВрдХреНрддрд┐ рдкреНрд░рдХрд╛рд░




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

 def gnome(data): i, size = 1, len(data) while i < size: if data[i - 1] <= data[i]: i += 1 else: data[i - 1], data[i] = data[i], data[i - 1] if i > 1: i -= 1 return data 


рдЕрдиреБрдХреВрд▓рд┐рдд рдмреМрдирд╛ рдХреНрд░рдордмрджреНрдз




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

 def gnome(data): i, j, size = 1, 2, len(data) while i < size: if data[i - 1] <= data[i]: i, j = j, j + 1 else: data[i - 1], data[i] = data[i], data[i - 1] i -= 1 if i == 0: i, j = j, j + 1 return data 


рдмрдмрд▓ рд╕реЙрд░реНрдЯ :: рдмрдмрд▓ рд╕реЙрд░реНрдЯ




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

рдлрд┐рд░ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд░рд┐рд╖реНрдарддрд╛ рдореЗрдВ рджреВрд╕рд░рд╛ рддрддреНрд╡ рдЕрдВрддрд┐рдо рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдерд╛рди рдкрд░ рд╣реИред рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рддреАрд╕рд░рд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рддрддреНрд╡ рдЕрдВрдд рд╕реЗ рддреАрд╕рд░рд╛ рд╣реИ, рдЖрджрд┐ред

 def bubble(data): changed = True while changed: changed = False for i in range(len(data) - 1): if data[i] > data[i+1]: data[i], data[i+1] = data[i+1], data[i] changed = True return data 


рдЕрдиреБрдХреВрд▓рд┐рдд рдмрдмрд▓ рд╕реЙрд░реНрдЯ




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


рд╢реЗрдХрд░ рд╕реЙрд░реНрдЯ :: рд╢реЗрдХрд░ рд╕реЙрд░реНрдЯ
(рдХреЙрдХрдЯреЗрд▓ рд╕реЙрд░реНрдЯ :: рдХреЙрдХрдЯреЗрд▓ рд╕реЙрд░реНрдЯ)




рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмреБрд▓рдмреБрд▓рд╛ред рдкрд╣рд▓реЗ рдкрд╛рд╕ рдкрд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ - рдЕрдзрд┐рдХрддрдо рд╕реЗ рдЕрдВрдд рддрдХ рдзрдХреНрдХрд╛ рджреЗрдВред рдлрд┐рд░ рд╣рдо рддреЗрдЬреА рд╕реЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдореЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдиреНрдпреВрдирддрдо рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВред рд╕рд░рдгреА рдХреЗ рдХреНрд░рдордмрджреНрдз рд╕реАрдорд╛рдВрдд рдХреНрд╖реЗрддреНрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рдж рдЖрдХрд╛рд░ рдореЗрдВ рдмрдврд╝ рдЬрд╛рддреЗ рд╣реИрдВред

 def shaker(data): up = range(len(data) - 1) while True: for indices in (up, reversed(up)): swapped = False for i in indices: if data[i] > data[i+1]: data[i], data[i+1] = data[i+1], data[i] swapped = True if not swapped: return data 


рд╡рд┐рд╖рдо-рд╕рдорд╛рди рдЫрдБрдЯрд╛рдИ :: рд╡рд┐рд╖рдо-рдХреНрд░рдордмрджреНрдз




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

рд╡реИрд╕реЗ, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдУ (рдПрди) рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рдХрд╛рд░ рдерд╛ред "рд╕рдорд╛рдирд╛рдВрддрд░ рд╕реЙрд░реНрдЯрд┐рдВрдЧ" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдПрд▓реНрдЧреЛрд▓рд╛рдм рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред

 def odd_even(data): n = len(data) isSorted = 0 while isSorted == 0: isSorted = 1 temp = 0 for i in range(1, n - 1, 2): if data[i] > data[i + 1]: data[i], data[i + 1] = data[i + 1], data[i] isSorted = 0 for i in range(0, n - 1, 2): if data[i] > data[i + 1]: data[i], data[i + 1] = data[i + 1], data[i] isSorted = 0 return data 


рдХрдВрдШреА рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ :: рд╕рдВрдпреБрдХреНрдд рдкреНрд░рдХрд╛рд░




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

рдкрд┐рдЫрд▓реА рд╕рднреА рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдореЗрдВ, рд╣рдордиреЗ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреАред рдФрд░ рдпрд╣рд╛рдВ, рдкрд╣рд▓реЗ, рддрддреНрд╡реЛрдВ рдХреЗ рдЬреЛрдбрд╝реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрдзрд┐рдХрддрдо рджреВрд░реА рдкрд░ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдирдП рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рдпрд╣ рджреВрд░реА рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдмрддрд╛рддреА рд╣реИред

 def comb(data): gap = len(data) swaps = True while gap > 1 or swaps: gap = max(1, int(gap / 1.25)) # minimum gap is 1 swaps = False for i in range(len(data) - gap): j = i + gap if data[i] > data[j]: data[i], data[j] = data[j], data[i] swaps = True return data 


рддреНрд╡рд░рд┐рдд рдкреНрд░рдХрд╛рд░ :: рддреНрд╡рд░рд┐рдд рдкреНрд░рдХрд╛рд░




рдЦреИрд░, рд╕рдмрд╕реЗ рдЙрдиреНрдирдд рдПрдХреНрд╕рдЪреЗрдВрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдоред

  1. рд╕рд░рдгреА рдХреЛ рдЖрдзреЗ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред рдордзреНрдп рддрддреНрд╡ рд╕рдВрджрд░реНрдн рд╣реИред
  2. рд╣рдо рд╕рд░рдгреА рдХреЗ рдмрд╛рдПрдВ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рджрд╛рдИрдВ рдУрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рддрддреНрд╡ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрджрд░реНрдн рдПрдХ рд╕реЗ рдмрдбрд╝рд╛ рд╣реИред
  3. рд╣рдо рдПрд░реЗ рдХреЗ рджрд╛рд╣рд┐рдиреЗ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдЪрд▓рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рддрддреНрд╡ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрджрд░реНрдн рдПрдХ рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИред
  4. рд╣рдо рдЕрдВрдХ 2 рдФрд░ 3 рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдЗрдВрдЯрд░рдЪреЗрдВрдЬ рдХрд░рддреЗ рд╣реИрдВред
  5. рд╣рдо рдЖрдкрд╕реА рдЖрдВрджреЛрд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмреИрдардХ рд╣реЛрдиреЗ рддрдХ 2-3-4 рдЖрдЗрдЯрдо рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВред
  6. рдмреИрдардХ рдмрд┐рдВрджреБ рдкрд░, рд╕рд░рдгреА рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕реЙрд░реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

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

 def quick(data): less = [] pivotList = [] more = [] if len(data) <= 1: return data else: pivot = data[0] for i in data: if i < pivot: less.append(i) elif i > pivot: more.append(i) else: pivotList.append(i) less = quick(less) more = quick(more) return less + pivotList + more 


рдХреЗ-рд╕реЙрд░реНрдЯ :: рдХреЗ-рд╕реЙрд░реНрдЯ


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

рд▓реЗрдХрд┐рди рдмрд╛рдд рдЕрд▓рдЧ рд╣реИред рд▓реЗрдЦрдХ рдХреЗ (рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд) рдЫрджреНрдо рдХреЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рд╕рдордЭрдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдХреНрдпрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдпрд╣ рдЖрднрд╛рд╕ рд╣реБрдЖ рдХрд┐ рд▓реЗрдЦрдХ рдХреБрдЫ рдмрджрдорд╛рд╢ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ:
  1. рд╣рдо рдПрдХ рд╕реБрдкрд░-рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред
  2. рд╣рдо рдПрдХ рдЧреИрд░-рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рд╕рдордЭ рд╕реЗ рдкрд░реЗ рдЫрджреНрдо рдХреЛрдб (рдЬреИрд╕реЗ, рд╕реНрдорд╛рд░реНрдЯ рдФрд░ рдЗрддрдиреЗ рд╕реНрдкрд╖реНрдЯ, рд▓реЗрдХрд┐рди рдореВрд░реНрдЦ рдЕрднреА рднреА рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрддреЗ) рдХреЗ рд╕рд╛рде рдХрдерди рдХреЛ рд╕реБрджреГрдврд╝ рдХрд░рддреЗ рд╣реИрдВред
  3. рд╣рдо рдЧреНрд░рд╛рдлрд╝ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЧрддрд┐ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, рдЕрдм рднреА рдХреЛрдИ рднреА рдЗрди рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЧрдгрдирд╛рдУрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдпрд╛ рдЦрдВрдбрди рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдЧрд╛ред
  4. рд╣рдо рдПрдХ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд▓реЗрдЦ рдХреА рдЖрдбрд╝ рдореЗрдВ Arxiv.org рдкрд░ рдмрдХрд╡рд╛рд╕ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ ред
  5. рд▓рд╛рдн !!!

рд╢рд╛рдпрдж рдореИрдВ рд▓реЛрдЧреЛрдВ рд╕реЗ рд╡реНрдпрд░реНрде рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдХреЛрдИ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЗ-рд╕реЙрд░реНрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

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

K- рддрд░рд╣ PHP рдореЗрдВ
 function _ksort(&$a,$left,$right){ $ke=$a[$left]; $i=$left; $j=$right+1; $k=$p=$left+1; $temp=false; while($j-$i>=2){ if($ke<=$a[$p]){ if(($p!=$j) && ($j!=($right+1))){ $a[$j]=$a[$p]; } else if($j==($right+1)){ $temp=$a[$p]; } $j--; $p=$j; } else { $a[$i]=$a[$p]; $i++; $k++; $p=$k; } } $a[$i]=$ke; if($temp) $a[$i+1]=$temp; if($left<($i-1)) _ksort($a,$left,$i-1); if($right>($i+1)) _ksort($a,$i+1,$right); } 


рдШреЛрд╖рдгрд╛


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

  • рдХреНрдпрд╛ рдЫрдБрдЯрд╛рдИ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╣реИ - рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг, рдиреАрд░рд╕ рдпрд╛ рдиреАрд░рд╕?
  • рдХреНрдпрд╛ рдмрдмрд▓ рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдФрд░ рд╕рдВрд╢реЛрдзрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ?
  • QuickSort рдХреА рдЧрддрд┐ рдореЗрдВ рдзреАрдореА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ?


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

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


рдПрдХреНрд╕реЗрд▓-рдПрдкреНрд▓рд┐рдХреЗрд╢рди AlgoLab , рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЪрд░рдгрдмрджреНрдз рддрд░реАрдХреЗ рд╕реЗ рдЗрдирдХрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдХреЗрд╡рд▓ рдпреЗ рдирд╣реАрдВ)ред

рд╡рд┐рдХреА - рд╕рд┐рд▓реА / рд╕реНрдЯреЛрдПрдЧ , рд╕реНрд▓реЛ , рдбреНрд╡рд╛рд░реНрдл / рдЧрдиреЛрдо , рдмрдмрд▓ / рдмрдмрд▓ , рд╢реЗрдХрд░ / рд╢реЗрдХрд░ , рдСрдб / рдЗрд╡рди , рдХреЙрдореНрдм / рдХреЙрдореНрдм , рдлрд╛рд╕реНрдЯ / рдХреНрд╡рд┐рдХ

рд╢реНрд░реГрдВрдЦрд▓рд╛ рд▓реЗрдЦ


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


All Articles