공부를 함시다/개발 한 스푼

링크드 리스트(LinkedList)와 배열(ArrayList)의 장단점과 시간복잡도

갈룩시노테7 2023. 6. 24. 00:00
반응형

배열(Array)

- 장점

빠른 접근 속도 : 인덱스를 사용하여 원하는 위치의 요소에 바로 바로 접근이 가능하다.

캐시 효율성 증가 : 성능 증가를 위해서는 캐시를 효율적으로 사용하려면 데이터가 지역성을 가져야 한다. 지역성은 데이터가 시간적, 공간적으로 가깝게 일어나는 것을 의미한다. 배열 요소들은 메모리에 연속적으로 저장되므로, 이에 해당된다.

크기 변경이 없는 경우에 유용 : 크기가 고정되어 있는 데이터 집합에 적합하다.

 

- 단점

크기 변경의 어려움 : 배열의 크기를 변경하기가 어렵다. 크기를 변경하려면 새로운 배열에 기존 요소를 복사해야 한다.

삽입 및 삭제의 비효율: 중간에 요소를 삽입하거나 삭제할 경우에는 뒤의 요소들을 다시 재배치 시켜주어야 한.

 

- 시간복잡도

접근 (Access): O(1) - 인덱스를 사용하여 직접 접근 가능
삽입 (Insertion) : 가장 마지막 요소: O(1) - 배열의 끝에 요소를 추가하거나 삭제
삭제 (Deletion) : 중간 또는 처음 요소: O(n) - 해당 위치 이후의 요소들을 이동시켜야 함

 

링크드 리스트(Linked List)

- 장점

동적 크기 조정 : 링크드 리스트는 동적으로 크기를 조절할 수 있다. 요소의 삽입 및 삭제가 쉽다.

요소 삽입 및 삭제의 효율성 : 중간에 요소를 삽입하거나 삭제할 경우에는 해당 위치의 링크만 수정하면 된다.

 

- 단점

느린 접근 속도 : 특정 위치의 요소에 접근하려면 첫 번째 요소부터 순차적으로 탐색하기에 접근 속도가 느리다.

추가적인 메모리 사용 : 링크드 리스트에는 각 노드마다 데이터와 다음 노드를 가리키는 링크(포인터)가 필요하므로, 배열에 비해 추가적인 메모리 공간이 필요하다.

캐시 효율성 저하 : 링크드 리스트의 요소들은 메모리에 연속적으로 저장되지 않으므로, 캐시 효율성이 낮다.

 

- 시간복잡도

접근 (Access) : O(n) - 특정 위치에 접근하기 위해 순차적으로 탐색해야 함
삽입 (Insertion) : 가장 마지막 요소: O(1) - 마지막 노드의 링크를 수정하면 됨
삭제 (Deletion) : 중간 또는 처음 요소: O(1) - 해당 위치의 노드의 링크를 수정하면 됨

반응형

'공부를 함시다 > 개발 한 스푼' 카테고리의 다른 글

멀티프로세스와 멀티스레드  (0) 2023.06.20
회선교환과 패킷교환  (0) 2023.06.19