F # рдкрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХрддрд╛рд░

рдкрд░рд┐рдЪрдп


рд╣рд╛рд╕реНрдХреЗрд▓ рдкрд░ рд╕реВрдЪреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдлрдПрдирдкреА (рдПрдл #) рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рднреА рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд▓реЗрдЦ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдореВрд▓реНрдп рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВред рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдл # рдкрд░ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХрддрд╛рд░ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдкрд╣рд▓рд╛, рдХреБрдЫ рд╢рдмреНрджрд╛рд╡рд▓реАред
F # .NET рдкрд░рд┐рд╡рд╛рд░ рдХреА рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ, рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдФрд░ рдПрдкреНрд░реЛрдЪ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБрдПрдБ рд╡реЗ рд╡рд╕реНрддреБрдПрдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдиреЗ рдкрд░, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C # рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреИрд╕рд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рдЪрд░рд┐рддреНрд░ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдкреБрд░рд╛рдирд╛ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ ред


рдПрдХрд▓ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╕реВрдЪреА


рдХрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдПрдХрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдПрдХрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдПрдХ рдРрд╕реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдПрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рдФрд░ рдкрд┐рдЫрд▓реЗ рддрддреНрд╡ рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИред
F # рдкрд░ рд╕рдорд╛рди рдмрд╛рдд:
type public 'a List = //  List  generic- 'a,     | Empty //  | Node of 'a * 'a List //:  -   ("") 

рдЗрд╕ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реВрдЪреА рдпрд╛ рддреЛ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╛ "рд╕рд┐рд░" рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ - "рдкреВрдВрдЫ", рдЬрд╣рд╛рдВ "рдкреВрдВрдЫ" рднреА рдПрдХ рд╕реВрдЪреА рд╣реИред
рд╕реВрдЪреА рдХреЗ рдореВрд▓ рд╕рдВрдЪрд╛рд▓рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВред

рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ


рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреБрд░рд╛рдиреА рд╕реВрдЪреА рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝ рджреЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирдИ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рд┐рд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рддрддреНрд╡ рд╣реИ, рдкреВрдВрдЫ рдкреБрд░рд╛рдиреА рд╕реВрдЪреА рд╣реИред F # рдкрд░ рдпрд╣ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
 member this.Cons x = Node(x, this) 

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

рдЖрдЗрдЯрдо рдореЗрдВ, рд╕реВрдЪреА 1 рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреА рд╕реВрдЪреА рд╣реИ, рд╕реВрдЪреА 2 рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдХреА рд╕реВрдЪреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, List1 рднреА List2 рдХреА рдкреВрдВрдЫ рд╣реИред
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╕реВрдЪреА рдХреА рд▓рдВрдмрд╛рдИ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдФрд░ рдУ (1) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рдХрд┐рд╕реА рд╕реВрдЪреА рд╕реЗ рдХреЛрдИ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓реЗрдВ


рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЙрддрдирд╛ рд╣реА рдЖрд╕рд╛рди рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдЬреЛрдбрд╝рдирд╛ред рдЕрдВрддрд┐рдо рдЬреЛрдбрд╝рд╛ рддрддреНрд╡ рдмрд╕ "рд╕рд┐рд░" рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ; рдЗрд╕ рддрддреНрд╡ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рдкреВрдВрдЫ" рд▓реЗрдВред
 member this.Head = match this with | Empty -> failwith "Empty stack" | Node(head, tail) -> head member this.Tail = match this with | Empty -> failwith "Empty stack" | Node(head, tail) -> tail 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдУ (1) рд╣реИред

рд╕реВрдЪреА рдХрд╛ рдкреНрд░рд╕рд╛рд░


рдПрдХ рд╕реВрдЪреА рдкрд░ рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдСрдкрд░реЗрд╢рди рдПрдХ рдкреНрд░рд╕рд╛рд░ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЖрдЗрдЯрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ред рдПрдХ рдЙрддреНрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП, рдореВрд▓ рд╕реВрдЪреА рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдирдП рд╕реНрдерд╛рди рдкрд░ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдирдИ рдФрд░ рдкреБрд░рд╛рдиреА рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдЖрдо рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЬрдЯрд┐рд▓рддрд╛ рд╣рдореЗрд╢рд╛ рдУ (рдПрди) рд╣реЛрдЧреАред рдиреАрдЪреЗ рдХреЛрдб рдФрд░ рдЪрд┐рддреНрд░рдг:
 let rec reverse destList sourceList = match sourceList with | Empty -> destList | Node(sourceHead, sourceTail) -> reverse (Node(sourceHead, destList)) sourceTail 


рдЪрд┐рддреНрд░ рдореЗрдВ, рд╕реВрдЪреА 1 рдХреЛ рдЙрд▓рдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреА рд╕реВрдЪреА рд╣реИ, рд╕реВрдЪреА 2 рдХреЗ рдмрд╛рдж рд╣реИред

рдмрд╛рд░реА


рд╕реНрдЯреИрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдРрдб рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдЖрджрд░реНрд╢ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдХреБрдЫ рдРрд╕реА рд╕реВрдЪрд┐рдпрд╛рдБ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддрддреНрд╡реЛрдВ рдХреА рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рд╛рде рдПрдХ рдХрддрд╛рд░ рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ "рдкрд╣рд▓реЗ рдЖрдУ - рдкрд╣рд▓реЗ рдмрд╛рд╣рд░ рдЖрдУ" (рдлреАрдлреЛ)ред
рдХрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд░рд┐рдпрд░ рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рдирдП рддрддреНрд╡ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╕рд╛рдордиреЗ рдХреА рд╕реВрдЪреА рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рддрддреНрд╡ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред
 type 'a Queue (front:'a List, rear: 'a List) = //   Queue    static member Empty = Queue(List.Empty, List.Empty) //   -    


рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛


рдПрдХ рдЖрдЗрдЯрдо рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдмреИрдХ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдмрд▓реНрдХрд┐, рдПрдХ рдирдИ рдХрддрд╛рд░ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рд╛рдордиреЗ рдХреА рд╕реВрдЪреА рд╕рдорд╛рди рд╣реИ рдФрд░ рдПрдХ рдирдИ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдХрд░ рдкреАрдЫреЗ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ:
  member this.Snoc value = Queue(front, rear.Cons value) 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХрдард┐рдирд╛рдИ рдХрд╛ рдЖрдХрд▓рди рдПрдХ рдПрдХрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ - рдУ (1)ред

рдХрд┐рд╕реА рдкрдВрдХреНрддрд┐ рд╕реЗ рдХреЛрдИ рдЖрдЗрдЯрдо рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


рд▓рд▓рд╛рдЯ рд╕реВрдЪреА рд╕реЗ рдПрдХ рдЖрдЗрдЯрдо рдирд┐рдХрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЦрд╛рд▓реА рд╣реИред рдпрджрд┐ рдпрд╣ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдкреАрдЫреЗ рд▓реЗ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реЗрдВ - рдЕрдм рдпрд╣ рд▓рд▓рд╛рдЯ рд╣реИ, рдФрд░ рдкреАрдЫреЗ рдПрдХ рдЦрд╛рд▓реА рд╕реВрдЪреА рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдЬрдЯрд┐рд▓рддрд╛ рдУ (рдПрди) рд╕реВрдЪреА рд░реЛрд▓ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
  let frontToBack = match front, rear with |Empty, rear -> (rear.Reverse, Empty) |x -> (x) member this.Head = match frontToBack with | Empty, _ -> failwith "Empty or not reversed" | List.Node(a, __), _ -> a member this.Tail = match frontToBack with |Empty, _ -> failwith "Empty" |List.Node(a, tail), r -> Queue(tail, r) 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрддрд╛рд░реЛрдВ рдХреЗ "рдЬреАрд╡рди" рдХрд╛ рдПрдХ рдЪрд┐рддреНрд░рдг рд╣реИ, рдЬреЛ рдЬреЛрдбрд╝ рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдХреНрд░рдорд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рдЪрд╛рд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: A рдПрдХ рдЦрд╛рд▓реА рдХрддрд╛рд░ рд╣реИ, B рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдЦреНрдпрд╛ 1, 2, 3 рдФрд░ 4 рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, C рдПрдХ рддрддреНрд╡ (рдирдВрдмрд░ 1) рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж рдПрдХ рдХрддрд╛рд░ рд╣реИ, рд╕рдВрдЦреНрдпрд╛ 5 рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж G рдПрдХ рдХрддрд╛рд░ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХреА рдЧрдИ рдПрдХрд▓-рд▓рд┐рдВрдХреНрдб рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЕрднрд┐рдЧрдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдкрд░реЗрд╢рди рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдЙрдирдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ / рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ O (N) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИред рдореИрдВ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВред
рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдФрд░ рдХрддрд╛рд░ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЬрдЯрд┐рд▓рддрд╛ рдирд╣реАрдВ рд╣реИ - рдУ (рдПрди)ред рд╕реНрдерд┐рддрд┐ рдХреЛ O (1) рддрдХ рд╕реБрдзрд╛рд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЖрд▓рд╕реА рдЧрдгрдирд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдЕрдЧрд░ рдПрдХ рд╕рдореНрдорд╛рдирд┐рдд рдкрд╛рдардХ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рд╕рд╛рд╣рд┐рддреНрдп рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛


рдХреНрд░рд┐рд╕ рдУрдХрд╛рд╕рд╛рдХреА рдХреА рдкреБрд╕реНрддрдХ "рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ" рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реВрдЪрдирд╛ рдХреЗ рдореБрдЦреНрдп рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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


All Articles