데이터 구조의 종류와 장단점

Uno·2021년 4월 11일
0

이전 내용을 혹시 보시고 이 글을 읽고 계신가요? 만약 그렇다면 전체적인 카테고라이징은 되었을 것이라 생각합니다. 그래서 이젠 데이터 구조에 대해 장단점에 대해서 짧게 설명하고 넘어갈께요. 지식을 배운다음에는 언제 사용할지를 함께 고민해야 그 지식을 사용할 수 있다고 생각하기 때문에 이부분도 한번은 봐두시길 추천드립니다!

  • 배열
    장점: index 를 통해 특정 데이터에 빠르게 접근할 수 있고, 삽입(insert()) 그리고 삭제(remove())를 쉽게 할 수 있다.
    단점: 고정된 크기를 가지고 있고 상대적으로 삭제와 검색이 느리다.

  • 정렬된 배열(오름차순 or 내림차순)
    장점: 그냥 배열보다는 빠르다.
    단점: 배열과 동일한 단점을 가지고 있다.

  • 큐(Queue)
    ex) swift에서 “deqeueReusable”, “DispatchQueue” 관련 객체에서 사용되는 개념
    장점: FIFO(first-in-first-out)을 활용할 수 있다.
    단점: 상대적으로 접근속도 자체가 느리다.

  • 스텍(Stack)
    ex) 컨트롤러에서 present할 때마다 하나씩 스텍이 쌓이는것과 유사합니다.
    장점: LIFO(last-in-first-out)접근이 가능하다.
    단점: 상대적으로 접근속도 자체가 느리다.

  • 리스트(List)
    장점: 데이터 삽입 삭제 속도가 빠르다.
    단점: 검색 시, 속도가 느리다.

  • 해시 테이블(Hash table)
    장점: 키값을 미리 알고 있따면 매우 빠르다.(read, create 모두)
    단점: 키값을 모르면 느리다. 그리고 메모리 효율성이 떨어진다

  • 힙(Heap)
    장점: 삽입 삭제가 상당히 빠르고, 마지막값이나 첫번째 값에 빠르게 접근할 수 있다.
    단점: 마지막과 첫번째를 제외한 접근은 느리다.

트라이, 이진트리, 레드블랙트리, R트리, 그래프 에 대해서 책에서 설명하고 있으나 이것은 추후에 다시 따로 설명하겠습니다.

profile
iOS & Flutter

0개의 댓글