본문 바로가기

CS/자료구조

[자료구조] Array vs List

반응형

Array

 

  • 연속된 메모리 공간에 순차적으로 저장된 선형 자료구조
  • 논리적 저장순서와 물리적 저장 순서가 일치
  • 따라서 index로 원소에 접근 가능
  • 정의와 동시에 길이 지정 (고정길이)

장점

  • 인덱스를 통한 검색 용이
  • 연속적이여서 메모리 관리 편리

단점

  • 크기 변경 불가
  • 메모리 낭비 (원소 삭제 후 해당 공간이 빈 상태로 유지됨)

시간복잡도

  • 조회 : O(1)
  • 삽입/삭제 :
    - 맨 앞 혹은 중간 삽입/삭제 시 : O(n) ⟹ 삽입/삭제 O(1) + 위치조정 O(n)
    - 맨 뒤 삽입/삭제 시 : O(1)

List

 

  • 연결된 노드의 연속으로 이루어진 선형 자료구조
  • 각 노드는 데이터다음 노드의 주소를 저장 
  • 논리적 저장순서와 물리적 저장 순서가 불일치

장점

  • 포인터를 통해 다음 데이터의 위치를 가리키고 있어 삽입/삭제 용이
  • 불연속적 데이터 공간 사용으로 메모리 관리 편리

단점

  • 검색 성능이 좋지 않음
  • 포인터 저장으로 추가적인 메모리 공간 발생

시간복잡도

  • 조회 : O(n)
  • 삽입/삭제 : 
    - 맨 앞 삽입/삭제 시 : O(1) ⟹ head 위치 알고있음
    - 맨 뒤 혹은 중간 삽입/삭제 시 : O(n)  ⟹ 삽입/삭제 대상 조회 O(n) + 삽입/삭제 O(1)

비교결과 

  Array List
메모리 할당 효율   ✔️
데이터 저장 값 ✔️  
비순차적 추가/삭제   ✔️
순차적 추가/삭제 ✔️  

 


reference

 

https://laboputer.github.io/ps/2017/09/05/array-and-list/

https://yongkis.tistory.com/22

 

반응형

'CS > 자료구조' 카테고리의 다른 글

[자료구조] Hash  (0) 2021.06.21
[자료구조] Doubly Linked List  (0) 2021.06.13
[자료구조] Singly LinkedList  (0) 2021.06.13
[자료구조] Stack  (0) 2021.06.12
[자료구조] 자료구조란?  (0) 2021.06.06