[자료구조] Array와 Linked List

Song·2021년 6월 14일
0

자료구조

목록 보기
1/4

이번 알고리즘 주차에 배운 Array와 Linked List 자료구조에 대해 간략하게 정리해보려한다.

Array (배열)

특징

  • 순차적으로 저장
  • 배열의 크기는 정해진 데이터의 공간 (한번 정하면 바꿀 수 없어!)

장점

  • 인덱스를 이용하여 원소에 즉시 접근 가능 (그러므로 O(1)내에 접근 썝가능~)

단점

  • 중간에 삽입, 삭제를 위해서는 모든 원소들의 위치를 다 옮겨줘야함..경우에 따라 배열의 길이만큼 옮겨야 할 수 있으므로 최악의 경우 O(N) 이라고 할 수 있다.

결론

  • 원소를 추가 시 새로운 공간을 할당해야하므로 비효율적인 자료구조지만 즉시 접근이 가능한 만큼 데이터 접근 빈번 시 사용하기 좋다.

Linked List (aka list)

특징

  • 노드로 구성된 자료구조
  • 크기가 정해지지 않은 데이터 공간
  • 연결고리(pointer) 만 이어준다면 자유자재로 늘어난다.

장점

원소를 중간 삽입, 삭제를 위해서 앞뒤 포인터만 변경하면 됨으로 O(1) 타입, 즉 상수시간내에 할 수 있음
공간이 차더라도 맨뒤에 노드로 동적으로 쉽게 추가가능~

단점

  • 하지만 특정 원소에 접근하기 위해서는 연결고리에 따라 탐색해야함..그래서 최악의 상황때는 O(N)의 시간복잡도를 가짐

결론

삽입, 삭제 빈번할 때 사용하기 좋당!

*파이썬 배열은 array지만 내부적으로 동적 배열을 사용하기 때문에 일반 리스트처럼 마지막에 데이터 추가가능

profile
Learn From Yesterday, Live Today, Hope for Tomorrow

0개의 댓글