Array
κ°μ₯ κΈ°λ³Έμ μΈ μλ£κ΅¬μ‘°
λ Όλ¦¬μ μ μ₯ μμ = 물리μ μ μ₯ μμ
μΈλ±μ€(index)λ‘ ν΄λΉ μμ(element)μ μ κ·Όν μ μλ€. κ·Έλ κΈ° λλ¬Έμ μ°Ύκ³ μ νλ μμμ μΈλ±μ€ κ°μ μκ³ μμΌλ©΄ Big-O(1)μ ν΄λΉ μμλ‘ μ κ·Όν μ μλ€. μ¦ random access κ° κ°λ₯νλ€λ μ₯μ μ΄ μλ κ²μ΄λ€.
νμ§λ§ μμ λλ μ½μ μ κ³Όμ μμλ ν΄λΉ μμμ μ κ·Όνμ¬ μμ μ μλ£ν λ€(O(1)), λ ν κ°μ§μ μμ μ μΆκ°μ μΌλ‘ ν΄μ€μΌ νκΈ° λλ¬Έμ, μκ°μ΄ λ κ±Έλ¦°λ€. λ§μ½ λ°°μ΄μ μμ μ€ μ΄λ μμλ₯Ό μμ νλ€κ³ νμ λ, λ°°μ΄μ μ°μμ μΈ νΉμ§μ΄ κΉ¨μ§κ² λλ€. μ¦ λΉ κ³΅κ°μ΄ μκΈ°λ κ²μ΄λ€. λ°λΌμ μμ ν μμλ³΄λ€ ν° μΈλ±μ€λ₯Ό κ°λ μμλ€μ shiftν΄μ€μΌ νλ λΉμ©(cost)μ΄ λ°μνκ³ μ΄ κ²½μ°μ μκ° λ³΅μ‘λλ O(n)κ° λλ€.
κ·Έλ κΈ° λλ¬Έμ Array μλ£κ΅¬μ‘°μμ μμ κΈ°λ₯μ λν time complexity μ worst case λ O(n)μ΄ λλ€.
μ½μ μ κ²½μ°λ λ§μ°¬κ°μ§μ΄λ€. λ§μ½ 첫λ²μ§Έ μ리μ μλ‘μ΄ μμλ₯Ό μΆκ°νκ³ μ νλ€λ©΄ λͺ¨λ μμλ€μ μΈλ±μ€λ₯Ό 1 μ© shift ν΄μ€μΌ νλ―λ‘ μ΄ κ²½μ°λ O(n)μ μκ°μ μꡬνκ² λλ€.
Linked List
κ°κ°μ μμλ€μ μκΈ° μμ λ€μμ μ΄λ€ μμμΈμ§λ§μ κΈ°μ΅
μκΈ° λ€μμ μ΄λ€ μμμΈμ§ κΈ°μ΅ν΄λκΈ° λλ¬Έμ κ·Έ λΆλΆλ§ λ€λ₯Έ κ°μΌλ‘ λ°κΏμ£Όλ©΄ μμ μ μ½μ μ O(1) λ§μ ν΄κ²°κ°λ₯!
νμ§λ§ μνλ μμΉμ μ½μ μ νκ³ μ νλ©΄ μνλ μμΉλ₯Ό Search κ³Όμ μ μμ΄μ 첫λ²μ§Έ μμλΆν° λ€ νμΈν΄λ΄μΌ νλ€λ κ²μ΄λ€. Array μλ λ¬λ¦¬ λ Όλ¦¬μ μ μ₯ μμμ 물리μ μ μ₯ μμκ° μΌμΉνμ§ μκΈ° λλ¬Έμ΄λ€. μ΄κ²μ μΌλ¨ μ½μ νκ³ μ λ ¬νλ κ²κ³Ό λ§μ°¬κ°μ§μ΄λ€. μ΄ κ³Όμ λλ¬Έμ, μ΄λ ν μμλ₯Ό μμ λλ μΆκ°νκ³ μ νμ λ, κ·Έ μμλ₯Ό μ°ΎκΈ° μν΄μ O(n)μ μκ°μ΄ μΆκ°μ μΌλ‘ λ°μνκ² λλ€.
κ²°κ΅ linked list μλ£κ΅¬μ‘°λ search μλ O(n)μ time complexity λ₯Ό κ°κ³ , μ½μ , μμ μ λν΄μλ O(n)μ time complexity λ₯Ό κ°λλ€.
κ·Έλ μ§λ§ Linked List λ Tree ꡬ쑰μ κ·Όκ°μ΄ λλ μλ£κ΅¬μ‘°μ΄λ©°, Tree μμ μ¬μ©λμμ λ κ·Έ μ μ©μ±μ΄ λλ¬λλ€.
1. λ°μ΄ν°μ λν μ κ·Ό μλ | Arrayκ° μ’λ€. * λ°°μ΄μ indexλ§ μλ€λ©΄ O(1)μ μ κ·Όκ°λ₯ μ°κ²°λ¦¬μ€νΈλ μ΅μ ν λ²μ 리μ€νΈλ₯Ό μννμ¬μΌ νλ―λ‘ O(n) |
2. λ°μ΄ν° μ½μ μλ | κ²½μ°μ λ°λΌ λ€λ₯΄μ§λ§ μ λ°μ μΌλ‘ Linked Listκ° λ«λ€. * linked listλ μ΄λ κ³³μ μ½μ νλμ§ O(n) arrayλ λ°μ΄ν°λ₯Ό μ€κ°μ΄λ 맨 μμ μ½μ ν κ²½μ° λ°μ΄ν° νμΉΈμ© λ―Έλ€μΌ νκ³ κ³΅κ°μ΄ λΆμ‘±νλ©΄ realloc() λλ μλ‘μ΄ ν λΉνμ¬ λ©λͺ¨λ¦¬ κ³΅κ° νμ₯ νμ λ§μ½ arrayμ 곡κ°μ΄ λ§μ΄ λ¨μμκ³ λ§¨ λμ μ½μ νλ€λ©΄, array μ½μ μλ μμ O(1) κ°λ₯ |
3. λ°μ΄ν° μμ μλ | κ²½μ°μ λ°λΌ λ€λ₯΄μ§λ§ μ λ°μ μΌλ‘ Linked Listκ° λ«λ€. |
κ²°λ‘ | μ½μ
μμ κ° λ²λ²ν μ΄λ£¨μ΄μ§λ€λ©΄, Linked List μ¬μ©μ΄ μ’μ. μ΄λ―Έ λ§λ€μ΄μ§ ꡬ쑰μμ λ°μ΄ν°μ μ κ·Όλ§ νμνλ©΄ Arrayμ΄ μ’μ. |
μ λ°μ μΌλ‘ 리μ€νΈμ μ¬μ©μ΄ ν¨μ¬ μ’μ보μΈλ€.
νμ§λ§ μΌλ°μ μΈ μκ³ λ¦¬μ¦ λ¬Έμ λ₯Ό νμ΄ν λ 리μ€νΈλ³΄λ€ λ°°μ΄μ΄ ν¨μ¬ λΉ λ₯΄κ³ μ’λ€.
μλνλ©΄ λλΆλΆμ μκ³ λ¦¬μ¦ μ°μ΅λ¬Έμ λ€μ κ·Έ λ©λͺ¨λ¦¬ 곡κ°μ λ²μλ₯Ό μ£Όμ΄μ§κΈ° λλ¬Έμ λ°°μ΄ μ μΈμ κ·Έ MAXμΉλ‘ μ‘μ μ μλ€λ©΄, ν¨μ¬ λ νΈλ¦¬νκ³ λ¦¬μ€νΈμλ μ ν λ€λ₯Έ μλλ₯Ό 보μΈλ€.
리μ€νΈμ μ λ ₯μ μΆκ° κ³Όμ λ§λ€ λ©λͺ¨λ¦¬μ ν λΉμ΄ μΌμ΄λκ³ μμ μμλ λ©λͺ¨λ¦¬μ ν΄μ κ° μΌμ΄λλ€. λ©λͺ¨λ¦¬μ ν λΉκ³Ό ν΄μ λ O() μκ°μΌλ‘ λ°μ§μ§ μμ§λ§, μ΄λ° μμ€ν μ½(System Call)μ μ¬μ©νλ 문ꡬλ μκ°μμκ° κ½€ κ±Έλ¦°λ€.
λ°°μ΄μ΄λ 리μ€νΈμ΄λ λ¨μν μ΄λ‘ μ λ λμ μκΈ°κ° λ¬΄μμ νλ €λμ§, κ·Έ λͺ©μ μ λ°λΌ μ ννλ κ²μ΄ μ’λ€.