рдмрд╛рдЗрдирд░реА рд╣реАрдк: рдУ (рдПрди) рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдкреНрд░рдорд╛рдг

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдмрд╛рдЗрдирд░реА рд╣реАрдк рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ Sift-Down (рдпрд╛ Heapify) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХрдИ рд▓реЛрдЧ рд╢рд╛рдпрдж рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдвреЗрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЫрд╡рд┐ ред рдпрд╣рд╛рдБ рдореИрдВ рдЗрд╕ рддрдереНрдп рдХрд╛ рдкреНрд░рдорд╛рдг рджреЗрддрд╛ рд╣реВрдБред

рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдкрд░ рдвреЗрд░ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

procedure siftdown(v:longint); var min,l,r:longint; begin l:=v*2; r:=v*2+1; min:=v; if (l <= s) and (a[l] < a[min]) then min:=l; if (r <= s) and (a[r] < a[min]) then min:=r; if min <> v then begin swap(a[min], a[v]); sift_down(min); end; end; procedure build; var i:longint; begin for i:=n downto 1 do siftdown(i); end; 


рддреЛ, рдЪрд▓реЛ рдПрдХ рд╕рд░рдгреА рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЫрд╡рд┐ рддрддреНрд╡реЛрдВ, рдФрд░ рдЫрд╡рд┐ рдСрдкрд░реЗрдЯрд░ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЫрд╡рд┐ (рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЫрд╡рд┐ ) рдЗрд╕ рд╕рд░рдгреА рдкрд░ рдПрдХ рдвреЗрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордпред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЫрд╡рд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд░рд┐рдЪрд╛рд▓рди рд╕рдордп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЫрд╡рд┐ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

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

рд╕рдмреВрдд:

рдкрд░ рдЫрд╡рд┐ рдСрдкрд░реЗрдЯрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЫрд╡рд┐ рд╕реВрдЪреА рдЫрд╡рд┐ рддрддреНрд╡ рдХрдо рд╕реЗ рдХрдо рдмрдврд╝рддрд╛ рд╣реИ рдЫрд╡рд┐ рд╕рдордпред рдЕрдм рдЪрд▓реЛ рдЫрд╡рд┐ , рдпрд╛рдиреАред рдЫрд╡рд┐ ред рдлрд┐рд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЫрд╡рд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЙрд▓ рд╣реИрдВ рдЫрд╡рд┐ рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдвреЗрд░ рдореЗрдВ рдЫрд╡рд┐ рддрддреНрд╡реЛрдВред рдЫрд╡рд┐

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

рдЗрд╕ рддрд░рд╣ рд╕реЗ

рдЫрд╡рд┐
рдкрд░ рдЫрд╡рд┐ рд╢рдмреНрдж рд╢реВрдиреНрдп рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЪрдХреНрд░ рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЫрд╡рд┐ )ред
рд╣рдо рдпреЛрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдореЗрдВ рдмрд╛рдПрдВ рдХрд╛рд░рдХ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ

рдЫрд╡рд┐

рдпрд╣рд╛рдБ рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕:

рдЫрд╡рд┐

рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рд╢рд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред

рдЫрд╡рд┐

рдЫрд╡рд┐

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЫрд╡рд┐ ред
рдЫрд╡рд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдмрд╛рдВрдзрд╛ рдЧрдпрд╛ рд╣реИ рдЫрд╡рд┐ ред рдЗрд╕рд▓рд┐рдП, рдЫрд╡рд┐ ред
рдЗрд╕рд▓рд┐рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрд░рд┐рдЪрд╛рд▓рди рд╕рдордп рдЫрд╡рд┐ рдПрдХ рдЕрдиреБрдкрд╛рдд рдЖрдиреБрдкрд╛рддрд┐рдХ рд╣реИ рдЫрд╡рд┐ ред

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


All Articles